>首页> IT >

es6的class有没有变量提升

时间:2022-04-08 18:32:46       来源:PHP中文网

本文操作环境:windows10系统、Vue2.9.6版,DELL G3电脑。

es6的class有没有变量提升

class不存在变量提升

因为ES6不会把类的声明提升到代码头部,所以需要先定义再使用。

但是ES5就不一样,ES5存在变量提升,可以先使用,然后再定义。

// ES5可以先使用再定义,存在变量提升new A();function A(){}// ES6不能先使用再定义,不存在变量提升 会报错new B(); // B is not definedclass B{}

类不存在变量提升(hoist),这一点与 ES5 完全不同。

new Foo(); // ReferenceErrorclass Foo {}

上面代码中,ES6 Foo类使用在前,定义在后,这样会报错,因为 ES6 不会把类的声明提升到代码头部。这种规定的原因与下文要提到的继承有关,必须保证子类在父类之后定义。

{  let Foo = class {};  class Bar extends Foo {  }}

上面的代码不会报错,因为Bar继承Foo的时候,Foo已经有定义了。但是,如果存在class的提升,上面代码就会报错,因为class会被提升到代码头部,而let命令是不提升的,所以导致Bar继承Foo的时候,Foo还没有定义。

【相关推荐:《vue.js教程》】

以上就是es6的class有没有变量提升的详细内容,更多请关注php中文网其它相关文章!

关键词: 变量提升 相关文章 必须保证