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

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

this指向的問題,希望大家指點一下

this指向的問題,希望大家指點一下

DIEA 2018-08-02 18:21:48
這兩個在學ES6的相關語法,在學到箭頭函數的this問題的時候,我與之前學的ES5中的this進行相對比的時候,發現下面這行代碼得到不可思議的結果:var age = 77;function foo() {    var age = 18;     setTimeout(function () {        console.log(this.age);//undefined     },3000) } foo();有沒有大佬知道這里面的問題。我的理解是這個應該輸出77.但是這里卻輸出了undefined
查看完整描述

2 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

知道問題所在了。
援引一位大神的解釋
在瀏覽器環境下正常的,seTimeout中的this實際指向window,輸出77。如果在node環境下運行就不一樣了。node環境下也有自己的setTImeout計時器,它的this指向Timeout對象,Timeout對象沒有age屬性,就返回undefined了。你自己可以輸出this看看就明白了。

查看完整回答
反對 回復 2018-08-04
?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

你看錯了吧,延時3s后輸出的才是77,沒錯

https://img1.sycdn.imooc.com//5b657c9700013f7405270213.jpg

https://img1.sycdn.imooc.com//5b657c9700016eac05660262.jpg


查看完整回答
反對 回復 2018-08-04
  • 2 回答
  • 0 關注
  • 673 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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