原理 函数里包含函数,即闭包。 包含函数的结果是,子函数会挟持父函数的活动对象。子函数在访问一个变量时,先读自身的活动对象,是否包含此变量,没有从父函数里找,还没有,去祖函数,层层回溯,直到window,还没有就返回undefined。如图: 优点 对象、模块化的基础。缺点 增加额外的内...
分类:
编程语言 时间:
2014-08-18 12:00:44
阅读次数:
199
函数执行时的作用域链和活动对象是如何形成的及与闭包的关系1、javascript解析器启动时就会初始化建立一个全局对象global object,这个全局对象就 拥有了一些预定义的全局变量和全局方法,如Infinity, parseInt, Math,所有程序中定义的全局变量都是这个全局对象的属性。...
分类:
其他好文 时间:
2014-08-08 17:35:56
阅读次数:
183
当内部函数创建时,静态的保存了父作用域链,即使父函数执行完毕,其变量对象(这里面保存着我们想要的父变量)一直保存在内部函数的作用域链中。内部函数不再被调用之前,这个活动对象一直在内存中(通俗讲就是这时候父函数的变量对象和内部函数绑定在一起了)。这种机制取名为闭包。简洁地说:闭包就是有权访问其他函数作...
分类:
其他好文 时间:
2014-06-14 21:40:12
阅读次数:
216
闭包是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式为:在一个函数内部创建另一个函数。
“当某个函数被调用时,会创建一个执行环境(execution
context)及相应的作用域链。然后,使用arguments和其他命名参数的值来初始化函数的活动对象(activation ob...
分类:
编程语言 时间:
2014-05-30 20:20:13
阅读次数:
366
1 需要明白概念:执行环境变量对象,活动对象作用域,作用域链闭包垃圾处理机制闭包陷阱
分类:
编程语言 时间:
2014-05-05 23:29:49
阅读次数:
326