4
使用するBabel私はちょっと変わったことに気付きました。バーベルの機能をES5にコンパイル
const app =() => {}
はvar app = function() {}
と等しくなければなりませんか?
バベルはvar app = function app() {}
を返します。
使用するBabel私はちょっと変わったことに気付きました。バーベルの機能をES5にコンパイル
const app =() => {}
はvar app = function() {}
と等しくなければなりませんか?
バベルはvar app = function app() {}
を返します。
いいえ、バベルは、varに割り当てられた矢印関数として正しいです。スタックトレースとリフレクションを支援するvarの名前と同じ名前プロパティを理論的に持つべきです。詳細はthisリンクをご覧ください。陳腐化した場合のクイックサマリー:
宣言時に関数のnameプロパティが作成されます。
var foo = function() {};
console.log(foo.name); // foo
アロー関数が同じ動作があります:これは、実際にES 2015/ES 6バベルまで標準化されていませんでしたので
var foo =() => {};
console.log(foo.name); // foo
を関数式のnameプロパティは、名前バインディングから推測されますレガシー環境をサポートするために
var foo = function foo() {}; // notice it's function *foo* now
:実際にnamed function expressionを作成するために名前を追加する必要があります。
いいえ、バベルは、varに割り当てられた矢印関数として正しいです。スタックトレースに役立つvarの名前と同じ名前プロパティを理論的に持つべきです。 [this](http://2ality.com/2015/09/function-names-es6.html)のリンクをご覧ください。 –