标签:
闭包是指有权访问另一个函数函数作用域中的变量(内部变量)的函数.
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