码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript高级程序设计: 函数表达式

时间:2015-02-08 12:44:46      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

闭包

闭包是指有权访问另一个函数函数作用域中的变量(内部变量)的函数.

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();

JavaScript高级程序设计: 函数表达式

标签:

原文地址:http://www.cnblogs.com/yangke687/p/4279866.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!