我正在重寫一些CoffeScript代碼到ECMAScript 2015(ES6)。ES6箭頭功能和CoffeeScript胖箭頭功能之間的主要區別是什麼?
一些語法非常相似,如脂肪箭頭功能:
(param1, param2, paramN) => expression
什麼是ES6 =>和CoffeeScript =>之間的主要區別?
從已經處於相同情況的人(來回轉換箭頭函數)中找到人頭並且指出避免的陷阱和錯誤是很好的方法。
我正在重寫一些CoffeScript代碼到ECMAScript 2015(ES6)。ES6箭頭功能和CoffeeScript胖箭頭功能之間的主要區別是什麼?
一些語法非常相似,如脂肪箭頭功能:
(param1, param2, paramN) => expression
什麼是ES6 =>和CoffeeScript =>之間的主要區別?
從已經處於相同情況的人(來回轉換箭頭函數)中找到人頭並且指出避免的陷阱和錯誤是很好的方法。
CoffeeScript中的胖箭頭函數轉換爲您的常用JavaScript函數,並將this
綁定到詞法作用域(定義範圍)中的值。像這樣:
CoffeeScript的
sum = (a, b) =>
return a + b
的JavaScript transpilation
var sum;
sum = (function(_this) {
return function(a, b) {
return a + b;
};
})(this);
在ES2015箭頭功能總是這樣做this
結合。
let arrowFunction =() => this.property
轉化爲這ES5
let arrowFunction = (function() { return this.property }).bind(this)
由於this
不能綁定到任何東西在箭頭功能一樣,它們無法與new
關鍵字一起使用,因爲這需要綁定this
到一個新的對象。
在「正常」JavaScript函數(非箭頭)範圍內,可以訪問特殊的「數組」類似的變量,用於訪問傳遞給函數的所有參數,而不管參數如何簽名。當然,CoffeeScript胖箭頭功能也是如此。在我的sum
示例中,如果有人將其稱爲sum(1, 2, 3)
,則可以通過執行argument[2]
來訪問第三個參數。箭頭功能不提供arguments
,但具有「休息參數」。後者也存在於CoffeeScript中,他們稱之爲「splats」。
CS胖箭頭函數和JS箭頭函數都支持默認參數值。我知道這並沒有什麼不同,但值得一提的是國際海事組織。
我認爲咖啡腳本的箭頭功能是'胖',而不是es6箭頭功能:P –
@xyz「箭頭函數表達式(也稱爲胖箭頭函數)」mdn.io – lazlojuly
同意。我明白你的觀點。 –