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アロー関数では他のものにバインドできないため、新しいオブジェクトにバインドする必要があるため、キーワードと一緒に使用することはできませんnewthis

「通常の」JavaScript 関数 (非矢印) スコープでargumentsは、「配列のような」特別な変数へのアクセスがあり、パラメーターの署名に関係なく、関数に渡されたすべての引数にアクセスするのに役立ちます。もちろん、これは CoffeeScript のファットアロー関数にも当てはまります。私のsum例では、誰かがそれを と呼んだ場合、sum(1, 2, 3)を実行することで 3 番目の引数にアクセスできますargument[2]。アロー関数は を提供しませんargumentsが、「残りのパラメーター」を持っています。後者は CoffeeScript にも存在し、"splats" と呼ばれています。

CS の太矢印関数と JS 矢印関数の両方で、デフォルトのパラメーター値がサポートされています。それは違いではありませんが、IMOに言及する価値があります。

于 2015-10-29T21:39:03.947 に答える