Maison > interface Web > Voir.js > La classe es6 a-t-elle une promotion variable ?

La classe es6 a-t-elle une promotion variable ?

WBOY
Libérer: 2022-04-08 18:46:31
original
2229 Les gens l'ont consulté

Les classes ES6 n'ont pas de promotion variable. Il y a une promotion de variable dans la classe dans es5. Vous pouvez d'abord l'utiliser puis définir la classe. Dans es6, la déclaration de la classe ne sera pas promue en tête. Si vous l'utilisez d'abord dans la définition, une erreur sera signalée. .Par conséquent, vous ne pouvez pas l'utiliser d'abord, puis le définir.es6 Classe Il n'y a pas de promotion variable.

La classe es6 a-t-elle une promotion variable ?

L'environnement d'exploitation de cet article : système Windows 10, Vue version 2.9.6, ordinateur DELL G3.

La classe ES6 a-t-elle une promotion variable ?

La classe n'a pas de promotion variable

Étant donné que ES6 ne promeut pas la déclaration de classe en tête du code, elle doit d'abord être définie puis utilisée.

Mais ES5 est différent. ES5 a une promotion variable, qui peut être utilisée d'abord puis définie.

// ES5可以先使用再定义,存在变量提升
new A();
function A(){
}
// ES6不能先使用再定义,不存在变量提升 会报错
new B(); // B is not defined
class B{
}
Copier après la connexion

Les classes n'ont pas de levage variable (hoist), ce qui est complètement différent de l'ES5.

new Foo(); // ReferenceError
class Foo {}
Copier après la connexion

Dans le code ci-dessus, la classe ES6 Foo est utilisée en premier et définie plus tard. Cela provoquera une erreur car ES6 ne promouvra pas la déclaration de classe en tête du code. La raison de cette disposition est liée à l'héritage mentionné ci-dessous. Il faut s'assurer que la sous-classe est définie après la classe parent.

{
  let Foo = class {};
  class Bar extends Foo {
  }
}
Copier après la connexion

Le code ci-dessus ne signalera pas d'erreur, car lorsque Bar hérite de Foo, Foo est déjà défini. Cependant, s'il y a une promotion de classe, le code ci-dessus signalera une erreur, car la classe sera promue en tête du code, mais la commande let n'est pas promue, donc lorsque Bar hérite de Foo, Foo n'a pas été défini.

【Recommandation associée : "Tutoriel vue.js"】

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
es6
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal