我正在重写一些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
同意。我明白你的观点。 –