3

我希望将一些 CoffeScript 代码重写为 ECMAScript 2015 (ES6)。

一些语法非常相似,例如粗箭头函数:

(param1, param2, paramN) => expression

ES6 =>CoffeeScript =>之间的主要区别是什么?

最好从已经处于相同情况(来回转换箭头功能)的人那里得到提示,并指出要避免的陷阱和错误。

4

1 回答 1

1

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。

于 2015-10-29T21:39:03.947 回答