闭包是指有权访问另一个函数函数作用域中的变量(内部变量)的函数.
function createComparsionFunction( propertyName ){
return function( object1 , object2 ){
var value1 = object1[ propertyName ];
var value2 = object2[ propertyName ];
if( value1 < value2 ){
return -1;
}
else if( value > value2 ){
return 1;
}
else{
return 0;
}
};
}
var compare = createComparsionFunction(‘age‘);
compare( {age: 15} , {age: 17} ); // -1
闭包只能取得包含函数中任何变量的最后一个值,闭包包含的是整个变量对象,而不是某个特殊变量。
function createComparsionFunction(){
var results = new Array();
for( var i=0; i<10; i++ ){
results[i] = function(){
return i;
}
}
return results;
}
results = createComparsionFunction();
results[0](); //10
results[1](); //10
但是,我们可以通过创建另一个匿名函数强制让闭包的行为符合预期。
function createComparsionFunction(){
var results = new Array();
for( var i=0; i<10; i++ ){
results[i] = function(num){
return function(){
return num;
}
}(i);
}
return results;
}
results = createComparsionFunction();
原文:http://www.cnblogs.com/yangke687/p/4279866.html