js中变量提升

js中变量提升

ES5中var和function:
函数声明变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部

<script>
console.log(a);         //undefine 因为是初始化
var a =1;
</script>

我们要理解 [声明] [初始化] [赋值]
关于var变量是先声明后初始化为undefined,之后进行赋值。而let是只提升了初始化,但是仍然不能用是因为let有暂时死区:即不能在初始化之前使用。

那么,变量提升是只提升声明和初始化的
比如 var a = 5;
只是提升了 var a = undefined;而没有提升赋值。

ES6中let和const
1.let 声明的变量的作用域是块级的;
2.let 不能重复声明已存在的变量;
3.let 有暂时死区,不会被提升。

<script>
console.log(a);         //Cannot access 'b' before initialization
let  a =1;
</script>

最后看 const,其实 const 和 let 只有一个区别,那就是 const 只有「创建」和「初始化」,没有「赋值」过程。

猜你喜欢

转载自blog.csdn.net/qq_42535651/article/details/103298495