JS

javascript 闭包与this的指向

javascript closure and this direction

Posted by Lv Hui on May 7, 2014

闭包

从外部读取局部变量

子函数可以读取父函数内部声明的局部变量

1
2
3
4
5
6
7
8
9
function f1(){
	var n = 123;
	function f2(){
		alert(n);
	}
	return f2;
}
var result = f1();
result(); //123

其中f2函数就是闭包,f2被赋予了全局变量result,而f2又依赖于f1,所以f1在运行之后没有自动销毁,始终存在于内存中

具体可以看阮一峰老师的博客

函数的自调用

函数的底调用也属于闭包

1
2
3
(function(a){
	alert(a*a);
	})(3)

this的指向问题

在事件函数中this指向事件源

1
2
3
4
box.onclick = function(){
	this.style.color = 'red';
}
//this指向box

在对象内部指向当前对象

1
2
3
4
5
6
7
var object = {
	name : "mary",
	getNameFunc : function(){
		alert(this.name);
	}
}
//this指向object对象

js中的数据传址与传值

  • 传值:基本类型数据赋值时,直接将数据值传递过去

  • 传址:引用类型(对象)数据赋值时,只传递数据存储地址,不赋值值