会飞的柠檬
2016-01-03 16:01
var x =4;
obj={
x:3,
bar:function(){
var x=2;
setTimeout(function(){
var x=1;
alert(this.x);
},1000);
}
};
obj.bar(); //4
在JavaScript中,我们可以通过重新声明JavaScript变量,来覆盖原来那个同名变量:
第一个x其实是window对象的属性,
第二个x指的是obj对象的属性,可以通过obj.x调用,
第三个x指的是bar函数中的局部变量,只能在bar函数中,才有效!
第四个也是局部变量,不同的是setTimeout()这个函数是window对象的方法。
那么this又是谁呢?this指的是调用当前函数的那个对象的x属性!那个对象指的是window,所以,x指代的是第一个x,也就是全局变量!
你可以运行以下代码,以便更好理解!
<script> var x =4; var x = 5; alert(window.x);//5 obj={ x:3, bar:function(){ var x=2; setTimeout(function(){ var x=1; alert(this.x);//4 alert(window.x);//4 },1000); alert("obj-bar-x--->"+x);//2 } }; obj.bar(); //4 alert("obj.x--->"+obj.x);//3 </script>
JavaScript深入浅出
281111 学习 · 1020 问题
相似问题