javascript的闭包

javascript的闭包真的是一个难点,晕了又晕,但是经过大神的一个指点,灵光一现就想通了。

java中的.是属性的意思,同样的,也可以把闭包当作java中的.来看待,当作一个属性(其实是javascript的链式特性啦)

为什么会有闭包呢,那是因为作用域不同,读取变量不能。比如,函数外的变量能够被函数内读取,但是函数内的变量不能被函数外读取(局部变量与全局变量的区别)。但是如果我们在函数外想读取函数内的变量呢(不声明成全局变量的情况下-private属性),那就是把该变量return出来。

要return的话就需要一个函数,于是,闭包就出现了。

具体参考学习javascript闭包。讲解得通俗易懂

下面这两个闭包为什么会返回不一样的值呢。主要是this这个关键字。javascript中规定在非strict模式下,this代表的是window,所以第二个this.name代表的是The Window。而第一个由于 var that=this,在函数一开始就捕获了this,并赋给that,这时候的that就指向object。

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

推荐阅读更多精彩内容

  • JS的闭包真的是一个老生常谈的知识点了,无奈它并不是那么好掌握,但是它又是那么重要,很多高级应用的开发都会用到闭包...
    一木_qintb阅读 318评论 0 1
  • 对js的广大初学者来说,闭包绝对是个难点。而且经常出现今天感觉懂了,明天就又不懂了的情况。本文就尝试从我自己的学习...
    danejahn阅读 745评论 0 49
  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zock阅读 1,085评论 2 6
  • ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...
    lzyuan阅读 961评论 0 0
  • 轻电波向漫画。分镜,构图人设都很有特色,让人感觉空旷,清爽。世界观也很独特,大环境一颗名为惑星9的星球,这颗星球因...
    伊蒂雅阅读 362评论 0 2