我希望将一些 CoffeScript 代码重写为 ECMAScript 2015 (ES6)。
一些语法非常相似,例如粗箭头函数:
(param1, param2, paramN) => expression
ES6 =>和CoffeeScript =>之间的主要区别是什么?
最好从已经处于相同情况(来回转换箭头功能)的人那里得到提示,并指出要避免的陷阱和错误。
我希望将一些 CoffeScript 代码重写为 ECMAScript 2015 (ES6)。
一些语法非常相似,例如粗箭头函数:
(param1, param2, paramN) => expression
ES6 =>和CoffeeScript =>之间的主要区别是什么?
最好从已经处于相同情况(来回转换箭头功能)的人那里得到提示,并指出要避免的陷阱和错误。
CoffeeScript 中的胖箭头函数转换为您常用的 JavaScript 函数,并this
在词法范围(定义范围)中绑定到它的值。像这样:
咖啡脚本
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 粗箭头函数中也是如此。在我的sum
示例中,如果有人将其称为sum(1, 2, 3)
,则可以通过 do 访问第三个参数argument[2]
。箭头函数不提供arguments
,但有“休息参数”。后者也存在于 CoffeeScript 中,他们称之为“splats”。
CS 胖箭头函数和 JS 箭头函数都支持默认参数值。我知道,这没什么区别,但值得一提的是 IMO。