会飞的柠檬
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深入浅出
281087 学习 · 1054 问题
相似问题