簡體   English   中英

ES6箭頭功能和CoffeeScript胖箭頭功能之間的主要區別是什么?

[英]What are the key differences between ES6 arrow function and the CoffeeScript fat arrow function?

我希望將一些CoffeScript代碼重寫為ECMAScript 2015(ES6)。

一些語法非常相似,例如胖箭頭函數:

(param1, param2, paramN) => expression

ES6 =>CoffeeScript =>之間的主要區別是什么?

從那些已經處於相同情況(轉換箭頭函數來回)的人那里得到提醒可能會很好,並且可以指出要避免的陷阱和錯誤。

在CoffeeScript中脂肪箭頭的功能轉化為你平時的JavaScript函數,並結合this其在詞法范圍(定義的范圍)值。 像這樣:

CoffeeScript的

sum = (a, b) =>
  return a + b

JavaScript轉換

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函數(非箭頭)作用域中,可以訪問“數組類似”的特殊arguments變量,並且無論參數簽名如何,都可以訪問傳遞給函數的所有參數。 當然,在CoffeeScript fat-arrow函數中也是如此。 在我的sum示例中,如果有人將其稱為sum(1, 2, 3) ,則可以通過argument[2]訪問第三個參數。 箭頭函數不提供arguments ,但具有“休息參數”。 后者也存在於CoffeeScript中,他們稱之為“splats”。

CS胖箭頭函數和JS箭頭函數都支持默認參數值。 我知道,這不是一個區別,但值得一提的是IMO。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM