一部の 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)
を実行することで 3 番目の引数にアクセスできますargument[2]
。アロー関数は を提供しませんarguments
が、「残りのパラメーター」を持っています。後者は CoffeeScript にも存在し、"splats" と呼ばれています。
CS の太矢印関数と JS 矢印関数の両方で、デフォルトのパラメーター値がサポートされています。それは違いではありませんが、IMOに言及する価値があります。