首页 > 编程语言 > 详细

javaScript--浅谈闭包

时间:2017-08-03 13:16:16      阅读:164      评论:0      收藏:0      [点我收藏+]

作用域就不说了,先来理解一个概念:作用域链

 

当定义一个函数时,它实际上保存一个作用域链。

当调用这个函数时,它创建一个新的对象来存储他的局部变量,并将这个对象添加至保存的那个作用域链上,同时创建一个新的更长的表示函数调用作用域的‘链’。

下面来举个栗子:

 var scope = ‘G scope‘;
function checkscope(){
          var scope = ‘L Scope‘;
          function f(){
                      return scope;
                         }
          return f();
 }
checkscope();  //   ‘L Scope’



var scope = ‘G scope‘;
function checkscope(){
          var scope = ‘L Scope‘;
          function f(){
                      return scope;
                         }
          return f;
 }
checkscope()(); //  ‘L Scope‘
简单来说, 定义  f  时候生成 的 作用域链保存了当前作用域的所有对象,包括 var scope = ‘L Scope’;  这个局部变量。
 
函数定义时的作用域链到函数执行时依然有效。这句话就是闭包的精髓了。

 

javaScript--浅谈闭包

原文:http://www.cnblogs.com/zwhblog/p/7279099.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!