ES6クラスではJavaScriptの既存のプロトタイプベースの継承[1]上だけ構文砂糖ですので、それは(IMO)それが定義だホイストするために理にかなって:なぜES6クラスは持ち上げられないのですか?
var foo = new Foo(1, 2); //this works
function Foo(x, y) {
this.x = x;
this.y = y;
}
が、以下では動作しません。
をvar foo = new Foo(1, 2); //ReferenceError
class Foo {
constructor(x, y) {
this.x = x;
this.y = y;
}
}
なぜES6クラスが吊り上げられないのですか?
ES6クラス*は構文的な砂糖ではありませんが、主に構文的な砂糖です。 –
ホイストは、誤解と混乱のほとんど無限の原因となっています。 ES6に追加されたすべての新しい宣言構造体( 'let'、' const'、 'class')は、吊り上げられていません(まあ、半分吊り*です)。 Eichまたはそれに類するものからの引用を除いて、あなたは効果的な推測ではない答えを得るつもりはない。 –
@mmm:MDNはコミュニティによって編集されていますが、間違っていることもあります。しばしば、他のサイトほど頻繁にはないが、時にはそうではない。それらがどのように吊り上げられていても持ち上げられていないかについては、[この回答](http://stackoverflow.com/a/31222689/157247)を参照してください。 –