我们都知道,当存在函数嵌套时,如果内部函数级作用域中引用了外部函数级作用域的变量,将会产生闭包,延长引用变量的生存周期

那么如果是函数级作用域内部引用外部块级作用域的变量呢

看代码

var a = [];	// 将三个函数装起来方便对比
for (let i=0; i<3; i++)
{
	let fn = function(){
		console.log(i);	// 在函数级作用域内,引用外部块级作用域变量i
	}

	a.push(fn);
}

当前作用域示意图如下
JS函数级作用域内部引用外部块级作用域变量_javascript
使用chrome调试工具,查看数组里面装的3个函数
JS函数级作用域内部引用外部块级作用域变量_javascript_02
可以看到,由于在函数级作用域内部引用了外部块级作用域的变量,使得这三个函数里,都在内部保存了引用的变量,不过此处用于保存变量的对象叫做Block,而在闭包里面,这个对象叫做Closure