美文网首页
通过例子理解JS闭包

通过例子理解JS闭包

作者: cythia_yyy | 来源:发表于2017-10-23 18:35 被阅读0次

理解闭包的前提是对JS变量作用域的熟悉,变量作用域包括全局变量和局部变量。

简要说明:函数内部能够访问全局变量,函数外部不能访问函数内部的局部变量,在函数内部声明的局部变量必须使用var标识符,不加var的变量默认为函数外的全局变量。

函数闭包可以简单描述为“定义在一个函数内部的函数”。闭包要解决的就是实现函数外部对函数内部局部变量的访问。

下面是两个闭包的示例:

(1)var name = "The Window";

         var object = {

               name : "My Object",

               getNameFunc : function(){

                      return function(){

                            return this.name;

                      };

                }

        };

       alert(object.getNameFunc()());

(2)var name = "The Window";

         var object = {

                 name : "My Object",

                 getNameFunc : function(){

                        var that = this;

                        return function(){

                               return that.name;

                        };

                 }

        };

       alert(object.getNameFunc()());

相关知识点:

a. this的指向是在运行时决定的

b. 每次执行的匿名函数都是一个新的function,且新的function的执行上下文为window,即此时的this指向全局

c. getNameFunc函数为object的一个属性,使用“var that = this;”中的this指向object,而不是widnow

输出结果 代码(1)输出"The Window",代码(2)输出"My Object"。

相关文章

  • 通过例子理解JS闭包

    理解闭包的前提是对JS变量作用域的熟悉,变量作用域包括全局变量和局部变量。 简要说明:函数内部能够访问全局变量,函...

  • 闭包

    相信众多JS的lovers都听说过这句话:闭包很重要但是很难理解。 先看一个闭包的例子: function foo...

  • js闭包例子

    闭包可以使某个方法的需要用到的变量不会让别的函数所改变

  • 一分钟理解js闭包

    一分钟理解js闭包,关于js闭包的内容介绍了很多,本文带着大家快速理解什么是js闭包,感兴趣的小伙伴们可以参考一下...

  • 一分钟带你弄懂闭包

    一分钟理解js闭包,关于js闭包的内容介绍了很多,本文带着大家快速理解什么是js闭包,感兴趣的小伙伴们可以参考一下...

  • 什么是闭包?几分钟告诉你

    一分钟理解js闭包,关于js闭包的内容介绍了很多,本文带着大家快速理解什么是js闭包,感兴趣的小伙伴们可以参考一下...

  • 一分钟带你弄懂闭包

    一分钟理解js闭包,关于js闭包的内容介绍了很多,本文带着大家快速理解什么是js闭包,感兴趣的小伙伴们可以参考一下...

  • JS闭包入门

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

  • 理解闭包经典例子

    闭包,很多人对它的定义和理解都不一样,关于它的文章比比皆是,但是要真正意义上的理解它,还是有些难度的。对于闭包的定...

  • JS 闭包(Closure)

    参考阮一峰老师的JS 闭包 理解闭包前需要理解变量作用域、变量提升 JS作用域 那如何让它依次打印,12345呢;...

网友评论

      本文标题:通过例子理解JS闭包

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