浅析let const var

今天看了一篇文章,在 let 和 const的使用频率。

查了一些相关的资料,最简单直接的还是阮一峰老师的总结

let与const的共性

1、块局作用域;
2、不存在变量提升,一定声明后才能使用;
3、暂时性死区,在代码块内使用let命令声明变量之前,该变量都是不可用的,不受外部变量影响;
4、在相同作用域范围内不允许重复声明;
const与let不同点在于:
1、const如果声明的变量是简单的值,则不能改变变量的值,修改会报错;

2、const如果声明的是复合类型的变量,则只保证变量地址不变,值可以变;

块级作用域

let可以在{},if,for里声明,其用法同var,但是作用域限定在块级

看下他们在for循环中的不同表现

for(var s = 0; s<5; s++){
  const a = 50;
}
console.log(a)
console.log(s)
在for循环内部const或者let声明,在外部是访问不到的。但是如果用var声明,外部是可以访问到的。
for(let s = 0; s<5; s++){
  console.log(s)
}
console.log(s)  // s is not defined

这样声明同样会报错。

随机浏览