ES6 クラスには変数のプロモーションがありません。 es5ではクラスの変数昇格があり、これを使ってからクラスを定義することもできますが、es6ではクラスの宣言が先頭に昇格されず、定義で先に使用するとエラーになりますと報告されるため、先に使用してから定義することはできません es6 のクラス 変数の昇格はありません。
![es6 クラスには変数プロモーションがありますか?](https://img.php.cn/upload/article/202204/08/2022040817123428695.jpg)
#この記事の動作環境: Windows 10 システム、Vue バージョン 2.9.6、DELL G3 コンピューター。
es6 クラスには変数プロモーションがありますか?
クラスには変数プロモーションがありません
ES6 はクラス宣言をコードの先頭にプロモートしないため、クラス宣言をコードの先頭にプロモートする必要があります。最初に定義してから使用します。
しかし、ES5 は異なります。ES5 には変数プロモーションがあり、最初に使用してから定義できます。
// ES5可以先使用再定义,存在变量提升
new A();
function A(){
}
// ES6不能先使用再定义,不存在变量提升 会报错
new B(); // B is not defined
class B{
}
ログイン後にコピー
ES5とは全く異なり、クラス内に変数ホイスト(ホイスト)がありません。
new Foo(); // ReferenceError
class Foo {}
ログイン後にコピー
上記のコードでは、ES6 Foo クラスが最初に使用され、後で定義されていますが、ES6 はクラス宣言をコードの先頭に上げないため、エラーが発生します。この規定の理由は、後述する継承に関係しており、サブクラスは必ず親クラスの後に定義する必要があるためです。
{
let Foo = class {};
class Bar extends Foo {
}
}
ログイン後にコピー
Bar が Foo を継承するとき、Foo はすでに定義されているため、上記のコードはエラーを報告しません。ただし、クラスの昇格がある場合、クラスはコードの先頭に昇格されますが、let コマンドは昇格されないため、上記のコードはエラーを報告します。そのため、Bar が Foo を継承する場合、Foo は定義されていません。
[関連する推奨事項:「
vue.js チュートリアル 」]
以上がes6 クラスには変数プロモーションがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。