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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于this的又一個問題

關于this的又一個問題

呼如林 2019-03-21 18:14:58
本人正在看《你不知道的javascript上卷》,第80頁其有關使用this來隱式引用函數的詞法作用域錯誤代碼如下:function foo(){  var a = 2;  this.bar();    //1}function bar(){  console.log(this.a);}foo();我在VS Code上將代碼注釋1處的this給刪掉之后(如書中所說)發現盡管代碼沒有出錯但是結果為undefined。在單步調試查看調用堆棧時是foo->bar,也就是按照我所想的bar()中this綁定到了foo函數對象上。百思不得其解之后在全局和bar函數中都另外再定義了不同值的a變量,然而結果還是undefined。。。突然想到是不是因為自動使用嚴格模式的原因,然而在各個瀏覽器控制臺上測試同樣是undefined的結果,無解。。。。。求助?。∵@個this到底綁定到哪里了??!
查看完整描述

7 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

this的作用域和它運行的環境有關,它指向調用某方法、對象的對象。比如這里,如果是node.js,就會一直指向global;如果是瀏覽器,就會一直指向window。不過node.js環境下,在最外面一層以var a = 1形式聲明的變量,并不會綁定在node.js 的global上,以a = 1類似的方式聲明。

查看完整回答
反對 回復 2019-04-01
?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

瀏覽器里面普通函數調用,this是window,node里面是global,全局環境的this瀏覽器還是window,node是module.exports this是誰只取決于函數怎么調用的


查看完整回答
反對 回復 2019-04-01
?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

  1. 在這個例子里,想在bar里面訪問foo作用域中的變量是不可能的

  2. 在瀏覽器中,bar中的this指向全局變量。在node中不是


查看完整回答
反對 回復 2019-04-01
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

this是全局的window對象,a在你的foo方法里,是局部變量。所以是未定義。你可以看看這個,js this的四種場景


查看完整回答
反對 回復 2019-04-01
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

bar中的thsi.a是沒有的啊


查看完整回答
反對 回復 2019-04-01
  • 7 回答
  • 0 關注
  • 638 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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