爱老婆的dubi

导航

关于javascript中闭包的理解

闭包就是能够读取其他函数内部变量的函数。

在javascript中,只有函数内部的子函数可以读取局部变量,因此,我理解闭包就是定义在一个函数内部的函数。

 例子:

var f1 = function() {
	var n = 100;
	var f2 = function() {
		return n;
	}
	return f2();
}
var s = f1();

console.error(n + 1);

由于n是定义在f1内部的局部变量,因此外部的n是未定义的,会出错

var f1 = function() {
	var n = 100;
	var f2 = function() {
		return n;
	}
	return f2();
}
var s = f1();

console.notice(s + 1);

通过闭包函数f2,局部变量n就可以在外部取到。

其实熟悉了以后,闭包就是匿名函数,然后被它的外部函数作为返回值传出来,就可以在外部取到局部变量了

闭包的作用除了前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

 

闭包不能乱用,因为其变量一直保持在内存中,因此内存消耗会比较大。

 

posted on 2015-10-02 10:57  静-行  阅读(116)  评论(0)    收藏  举报