2017-07-13 5 views
4

使用するBabel私はちょっと変わったことに気付きました。バーベルの機能をES5にコンパイル

const app =() => {}var app = function() {} と等しくなければなりませんか?

バベルはvar app = function app() {}を返します。

+4

いいえ、バベルは、varに割り当てられた矢印関数として正しいです。スタックトレースに役立つvarの名前と同じ名前プロパティを理論的に持つべきです。 [this](http://2ality.com/2015/09/function-names-es6.html)のリンクをご覧ください。 –

答えて

4

いいえ、バベルは、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を作成するために名前を追加する必要があります。

関連する問題