变量声明

2021/11/2

# var

  1. var有变量提升
  2. var的变量提升只是提升声明,还是要等执行到对应行才赋值
  3. var不会创建块级作用域
  4. var声明的全局变量会挂载到window上去

# 缺陷解决

  • 由于var关键字的缺陷,引入了let/const关键字
  • 解var无决块级作用域问题,let/const 有
  • 解决变量提升问题,设置了一个变量死区

变量死区

  • var 提升了声明,且可以访问到,只不过到对应行才进行赋值
  • let 也提升了变量声明,但是不让访问,放在变量死区里面
/**
 * 报错:ReferenceError: Cannot access 'a' before initialization
 * 说明知道有这个变量了,但是还不让访问
 */
console.log(a);
let a = 0;
1
2
3
4
5
6

# let

# const

  • 规则与let基本一致
  • 特点:设置后不可更改
const a = 1;
a = 2; // 报错
1
2

# 其他声明

上次更新: 11/1/2024