es6的class有变量提升吗

本文小编为大家详细介绍“es6的class有变量提升吗”,内容详细,步骤清晰,细节处理妥当,希望这篇“es6的class有变量提升吗”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

十余年建站经验, 成都网站设计、网站建设客户的见证与正确选择。创新互联提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。

es6的class没有变量提升。在es5中class存在变量提升,可以先使用再定义类,而在es6中,不会把类的声明提升到头部,先使用在定义的话会产生报错,因此不能先使用再定义,es6的class也就没有变量提升。

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

es6的class有没有变量提升

class不存在变量提升

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

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

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

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

new Foo(); // ReferenceError
class Foo {}

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

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

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

读到这里,这篇“es6的class有变量提升吗”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。

名称栏目:es6的class有变量提升吗
文章URL:https://www.cdcxhl.com/article42/jjjihc.html

成都网站建设公司_创新互联,为您提供ChatGPT外贸建站营销型网站建设网站维护自适应网站标签优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

营销型网站建设