2017-08-16 21 views
0

當前對象考慮以下代碼:「這個」關鍵詞確實提到與LAMDA

var obj = { 
    method : function(){ 
     console.log(this); // This prints the **obj** correctly 
    } 
}; 

而且相同的代碼和λ:

var obj = { 
    method :() => { 
     console.log(this); // This prints **Window** object 
    }; 
}; 

爲什麼輸出不同?

+1

「一個箭頭函數不會自己創建它,這個封閉的執行上下文的這個值被使用。」在這種情況下(沒有雙關語意思),上下文就是'window'對象。 – Terry

+0

@Terry我沒有得到雙關語...... – evolutionxbox

+0

@evolutionxbox「在'這個案例中......」明白了嗎? 'this'? :) – Terry

回答

0

ES6箭頭函數語法使用「詞法範圍」來確定「this」的值應該是多少。詞法作用域是說,它使用一個包含有問題的代碼「這個」從周圍的代碼...代碼奇特的方式,因此它是

窗口

這裏。

+1

這是一個神祕的東西,你看到的反饋關於箭頭功能的基本信息,這是記錄在成千上萬的文檔,介紹,教程,博客文章,規格和SO問題的頁面。 – 2017-08-16 06:33:00