什么是闭包,闭包的用途是什么?

闭包是由函数和函数内部能访问到的变量组成的,在js中函数内部可以直接读取全局变量,而当我们想要得到函数内局部变量的时候,就需要在函数的内部再定义一个函数,并把子函数作为函数返回值返回出去,那么父函数就可以说使用子函数内的局部变量,如以下代码,f1函数就可以读取f2函数内的局部变量

function f1(){

    var n=999;

              function f2(){

              alert(n); }

    return f2;

  }

  var result=f1();

  result(); // 999

假设我们在做一个游戏,在写其中关于「还剩几条命」的代码。

如果不用闭包,你可以直接用一个全局变量:

window.lives = 30 // 还有三十条命

这样看起来很不妥。万一不小心把这个值改成 -1 了怎么办。所以我们不能让别人「直接访问」这个变量。怎么办呢?

用局部变量。

但是用局部变量别人又访问不到,怎么办呢?

暴露一个访问器(函数),让别人可以「间接访问」。

代码如下:

!function(){  var lives = 50 

 window.奖励一条命 = function(){    

lives += 1  } 

 window.死一条命 = function(){   

 lives -= 1  }

}()

闭包的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,不会被垃圾回收。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...
    lzyuan阅读 4,527评论 0 0
  • 什么是闭包: 如果一个函数用到了它作用域外面的变量,那么这个变量和这个函数之间的环境就叫闭包。 闭包的用途有些什么...
    Save_Onfir3阅读 12,899评论 0 5
  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    风萧萧易水寒_1196阅读 1,846评论 0 0
  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zock阅读 4,699评论 2 6
  • 大家好,我是IT修真院北京分院25期的学员,一枚正直纯洁善良的web前端程序员 今天给大家分享一下,修真院官网js...
    be684ac78b0c阅读 2,312评论 0 0

友情链接更多精彩内容