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

本文操作环境:windows10系统、Vue2.9.6版,DELL G3电脑。
class不存在变量提升
因为ES6不会把类的声明提升到代码头部,所以需要先定义再使用。
但是ES5就不一样,ES5存在变量提升,可以先使用,然后再定义。
// ES5可以先使用再定义,存在变量提升
new A();
function A(){
}
// ES6不能先使用再定义,不存在变量提升 会报错
new B(); // B is not defined
class B{
}类不存在变量提升(hoist),这一点与 ES5 完全不同。
主要考虑到新的架构调整变化较大以及不支持无缝升级这两大原因,官方正式宣布ThinkPHP5.2RC版本的版本号由原来的5.2变更为6.0(这一规划此前在核心成员中曾多次提及),不过PHP版本要求暂时没有变化(依然还是7.1+)。
4125
new Foo(); // ReferenceError
class 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中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号