码迷,mamicode.com
首页 > 编程语言 > 详细

javaScript--浅谈闭包

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

标签:闭包   return   bsp   scope   定义   var   变量   rip   ret   

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

 

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

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

下面来举个栗子:

 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--浅谈闭包

标签:闭包   return   bsp   scope   定义   var   变量   rip   ret   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!