“闭包”这个名字很奇怪,所谓闭包,其实就是一个函数,什么函数呢?一个可以访问另外一个函数作用域中变量的函数。创建闭包最常见的方式就是,在一个函数内部创建另一个函数。
function compareFun(param){
return function(obj1, obj2){
var value1 = obj1[param];
var value2 = obj2[param];
var result = value1 > value2 ? value1 : value2;
return result;
}
}
其中value1和value2两行代码是内部函数的代码,它们访问了外部函数的param参数,即使这个内部函数被返回了,或者是在其他地方被调用了,但它仍然可以访问变量param,这就是闭包。以下的例子也是个闭包,内部函数通过传参的形式访问了外部函数的变量content
var Java = function(content){
this.content = content;
(function(tempContent){
var div = document.creatElement('div');
div.innerHTML = tempContent;
})(content);
}
写成
自执行函数(立即执行函数)的形式
(function (){...})()
会方便许多,不然要这样写:
var Java = function(content){
this.content = content;
var func = function(content){
var div = document.creatElement('div');
div.innerHTML = content;
};
func(content);
}