美文网首页
js闭包浅析

js闭包浅析

作者: raining_804f | 来源:发表于2018-02-18 12:53 被阅读0次

闭包的定义:

闭包就是能够读取其他函数内部变量的函数

什么时候使用闭包:

闭包可以用在许多地方,它的最大用处有两个:

1 可以读取函数内部的变量,

2 让这些变量的值始终保持在内存中。

这里给大家普及一下this的相关问题

在全局函数中this等于window

当函数被当做某个对象的方法调用时,this等于那个对象

匿名函数的执行环境具有全局性,this通常指向window

一般的调用方法:

var flag = "window";

var object = {

flag : "local",

sayFlag: function(){

alert(this.flag);

}

}

object.sayFlag();//local

改用闭包:

var flag = "window";

var object = {

flag : "local",

sayFlag: function(){

//返回一个匿名函数

return function(){

alert(this.flag);

}

}

}

object.sayFlag()();//window

那么如何访问“local呢”?

var flag = "window";

var object = {

flag : "local",

sayFlag: function(){

var that = this; //此处的this是object的引用

//返回一个匿名函数

return function(){

alert(that.flag);

}

}

}

object.sayFlag()();//local

闭包变量常驻内存

var say = function(){

var i = 1;

var sayName = function(){

i++;

alert(i);

}

return sayName;

}

var result1 = say();

result1(); //1

result1(); //2

由于闭包访问外部函数的i,外部函数返回引用闭包函数,所以内存不会被回收,i值也常驻内存,所以每次执行say函数时,i并不会重新复制

相关文章

  • js闭包浅析

    闭包的定义: 闭包就是能够读取其他函数内部变量的函数 什么时候使用闭包: 闭包可以用在许多地方,它的最大用处有两个...

  • js闭包浅析

    背景知识 在讲闭包之前,下面几个概念需要先搞搞清楚: 执行环境 最外围的执行环境就是全局执行环境,在浏览器中执行环...

  • 浅析js闭包~

    用一句话说明什么是闭包,闭包就是一个函数可以调用另一个函数的变量。闭包有个特性就是当调用另一个函数的变量的时候,如...

  • js闭包浅析

    什么是闭包 「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。 有些人说闭包就是函数套函数,然...

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • JS闭包

    JS闭包 闭包练习

  • JS闭包问题(二)

    在之前的JS闭包问题(一)文章中大概介绍了一下JS闭包,同时讲了闭包与变量之间的问题,今天我们继续聊闭包,聊聊闭包...

  • JS闭包大结局(JS闭包系列3)

    在上一篇中再谈JS闭包(JS闭包系列2),我详细的介绍了JS中的变量作用域相关的概念,结合第一节关于JS闭包(JS...

  • 浅析闭包

    概念:闭包 的英文解释是有“block”的概念,所以,闭包就是一个封闭的函数,这个函数的特殊之处在于,是外部函数返...

  • JS闭包入门

    最近有看到朋友的面经里提到的JS闭包的问题,就想研究研究,以下是我对JS闭包的简单理解。 到底什么是JS闭包? 定...

网友评论

      本文标题:js闭包浅析

      本文链接:https://www.haomeiwen.com/subject/ksqbtftx.html