第五章作用域闭包
实质问题, 闭包的定义 当函数访问并记住所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。 (个人理解)闭包并没有什么神奇的,闭包是词法作用域的特性,函数能够保存它本身的词法作用域的变量是肯定的, 即使这个函数嵌套在另一个函数里面也不例外。 循环和闭包 闭包用来保存循环变量的值,每一次循环都创建一个副本。 如下代码: 1 2 3 4 5 6 7 for(var i=1; i<=5; i++) { (function(j) setTimeout(function timer(){ console.log(j) }) {})(i) } 模块 可以利用闭包去构建模块,封装私有属性和方法,然后暴露给外部方案修改内部的属性。