var有变量提升
x = 4; // 变量 x 设置为 4
console.log(x) //输出 4
var x; // 声明 x
上面代码相当于下面的
var x; // 声明 x
x = 4; // 变量 x 设置为 4
console.log(x) //输出 4
let不存在变量提升
在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。由于存在TDZ现象,所以let不存在变量提升。
const
-
声明常量,不可再赋值
- const保证的是变量指向的地址不可变,而不能保证地址指向的值不可变,如果是基本类型,地址指向的就是值,但是如果是引用类型就要注意了,引用类型的值时可变的