本文面向初学者,大神轻喷。

闭包是什么?

初学javascript的人,都会接触到一个东西叫做闭包,听起来感觉很高大上的。网上也有各种五花八门的解释,其实我个人感觉,没必要用太理论化的观念来看待闭包。

事实上,你每天都在用闭包,只是你不知道罢了。

比如:

var cheese = '奶酪'; var test = function(){
    alert(cheese);
}

OK,你已经写了一个闭包。

函数也是一个数据类型

变量 cheese 是在全局作用域中的一个变量,当你创建了一个 test 函数,那么,test 和 cheese 就共享一个全局作用域。

你要额外明白的一点是,在js中,函数和变量本质上是一个东西。函数也是一个数据类型。

从上面的定义中也能看出来这一点。你要是不相信的话,我们来看一下咯。

alert(cheese); alert(test);