概念
闭包是代码块和创建该代码块的上下文中数据的结合
简单的例子
一个函数就可以看出一个简单的闭包,函数里的变量只有函数内部能够访问到。
function() {
var i = 0;
}
一个复杂的例子
function createFuntion() {
var result = new Array();
for (var i = 0; i < 10; i++) {
//这个函数没有执行,但是已经循环结束,i变成了10.
result[i] = function() {
return i;
}
}
return result;
}
var funcs = createFuntion();
alert(funcs[0]());
这时alert出来的值是10,因为在循环的时候里面的方法并没有执行,funcs 相当于一个函数数组。
使用场景
有许多js或jquery插件,都会把方法封装到自己的闭包里,以免影响到其他的js代码,例如
(function ($) {
})(jQuery);
//js
(function() {
})();
闭包还有可能在其他方法中联合一起使用,形成自己的封闭环境。