let:声明的变量在块的作用域中有效。
不允许变量提升。
变量提升:
- 所有的声明都会提升到作用域的最顶上去。
- 同一个变量只会声明一次,其他的会被忽略掉或者覆盖掉。
- 函数声明的优先级高于变量声明的优先级,并且函数声明和函数定义的部分一起被提升。
定义:console.log(a); //undefined
var a = 123;
编译后:
var a;
console.log(a)
a = 123
//所以输出内容为 undeifend。
let不允许变量提升,声明在后会报出错误。
const声明一个只读的常量。一旦声明,常量的值就不能改变。