js闭包浅析

闭包的定义:

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

什么时候使用闭包:

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

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并不会重新复制

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是闭包 「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。 有些人说闭包就是函数套函数,然...
    落花的季节阅读 229评论 0 1
  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 1,714评论 0 6
  • ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...
    lzyuan阅读 979评论 0 0
  • 2016.9.1 第5章 闭包 5.1 闭包是如何工作的 闭包是一个函数在创建时允许该自身函数访问并操作该自身函数...
    如201608阅读 574评论 0 0
  • 今天的音频文章是《投资的刚需是避险》,又一次不得不承认一个事实:有时候,你看到的可能只是一个假象! 小时候总喜欢做...
    小小Mark阅读 331评论 0 2