我们都知道,当存在函数嵌套时,如果内部函数级作用域中引用了外部函数级作用域的变量,将会产生闭包,延长引用变量的生存周期
那么如果是函数级作用域内部引用外部块级作用域的变量呢
看代码
var a = []; // 将三个函数装起来方便对比
for (let i=0; i<3; i++)
{
let fn = function(){
console.log(i); // 在函数级作用域内,引用外部块级作用域变量i
}
a.push(fn);
}
当前作用域示意图如下
使用chrome调试工具,查看数组里面装的3个函数
可以看到,由于在函数级作用域内部引用了外部块级作用域的变量,使得这三个函数里,都在内部保存了引用的变量,不过此处用于保存变量的对象叫做Block,而在闭包里面,这个对象叫做Closure