亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這里的this,為什么指向的是全局變量

var x =4;

? ? ?obj={

? ? ? ? ?x:3,

? ? ? ? ?bar:function(){

var x=2;

setTimeout(function(){

? ? var x=1;

? ? ?alert(this.x);

? ? ?},1000);

? ?}

};

obj.bar(); //4


正在回答

1 回答

在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>


0 回復 有任何疑惑可以回復我~
#1

會飛的檸檬 提問者

謝謝解答
2016-01-03 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript深入淺出
  • 參與學習       281092    人
  • 解答問題       1054    個

由淺入深學習JS語言特性,且解析JS常見誤區,從入門到掌握

進入課程

這里的this,為什么指向的是全局變量

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號