说说var、let、const之间的区别
# 是什么
- var
es5定义变量的方式
var a = 1 - let es6定义可变变量的方式
// 可以不赋值
let b
let a = 1;
a = 2
- const es6定义不可变变量(栈地址)的方式
// 必须赋值
const a = 1;
# 怎么用
# 区别
- 变量提升 var: 可以在声明之前调用, 值为undefined
let: 不存在变量提升,提前使用报错
const: 不存在变量提升,提前使用报错
- 暂时性死区 var: 不存在
let: 在声明后才可以使用,提前使用报错
const: 在声明后才可以使用,提前使用报错
- 块级作用域
如{}var: 不存在
let: 存在
const: 存在
- 重复声明 var: 可以
let: 同一作用域不允许重复声明
const: 同一作用域不允许重复声明
- 修改声明 var: 可以
let: 可以
const: 不可以修改栈地址, 如果是引用类型,可以修改堆里的值
# 原理
# FAQ
上次更新: 2021/12/19, 18:05:42