let (定义变量)
代码块内有效
{
let a = 1
console.log(a) //1
}
console.log(a) //ReferenceError: a is not defined
不能重复声明
不存在变量提升
const (定义常量)
const如何做到声明初始化后不允许改变的?
保证变量指向的内存地址所保存的数据不允许改动,对于简单类型,值就保存在变量指向的那个内存地址,因此 const 声明的简单类型的变量等同于那个常量。而复杂类型、变量指向的内存地址其实是保存了一个指向实际数据的指针,所以 const 只能保证指针是固定的,至于指针指向的数据结构变不变就无法控制了,所以使用 const 声明复杂类型对象时要慎重
暂时性死区
代码块内如果存在 let 或则 const ,代码块会对这些命令的变量从块的开始形成一个封闭作用域。在声明变量 PI 之前使用它会报错
var PI = ‘a‘
if(true){
console.log(PI)//ReferenceError: a is not defined
const PI = ‘3.14‘
}
原文:https://www.cnblogs.com/angle-yan/p/13370830.html