我希望将一些CoffeScript代码重写为ECMAScript 2015(ES6)。
某些语法非常相似,例如胖箭头函数:
(param1, param2, paramN) => expression
ES6 =>和CoffeeScript =>之间的主要区别是什么?
从那些已经处于相同情况(转换箭头函数来回)的人那里得到一个很好的帮助并且可以指出要避免的陷阱和错误。
答案 0 :(得分:1)
CoffeeScript中的Fat-arrow函数转换为您常用的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
到一个新的对象。
在&#34;正常&#34; JavaScript函数(非箭头)范围,可以访问特殊的arguments
变量,该变量是&#34;数组,如&#34;并且无论参数签名如何,都可以访问传递给函数的所有参数。当然,在CoffeeScript fat-arrow函数中也是如此。在我的sum
示例中,如果有人将其称为sum(1, 2, 3)
,则可以通过argument[2]
访问第三个参数。箭头功能不提供arguments
,但有&#34;休息参数&#34;。后者也存在于CoffeeScript中,他们称之为&#34; splats&#34;。
CS胖箭头函数和JS箭头函数都支持默认参数值。我知道,这并不是一个区别,但值得一提的是IMO。