ホームページ >ウェブフロントエンド >Vue.js >es6 クラスには変数プロモーションがありますか?

es6 クラスには変数プロモーションがありますか?

WBOY
WBOYオリジナル
2022-04-08 18:43:592238ブラウズ

ES6 クラスには変数のプロモーションがありません。 es5ではクラスの変数昇格があり、これを使ってからクラスを定義することもできますが、es6ではクラスの宣言が先頭に昇格されず、定義で先に使用するとエラーになりますと報告されるため、先に使用してから定義することはできません es6 のクラス 変数の昇格はありません。

es6 クラスには変数プロモーションがありますか?

#この記事の動作環境: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。