var 与 let
① var 声明的变量根据作用域分为全局变量和局部变量,let 是块级声明(块级作用域),在指定块(字符 { 和 } 之间的区域)的作用域之外无法访问 let 声明的变量。
② var 存在变量提升(hoisting)机制,let 不存在变量提升机制(所以 let 声明语句放在封闭代码块的顶部)。
③ 在同一作用域不能用 let 重复定义已经存在的标识符。
const 与 let
相同:
① 声明的都是块级标识符;
② 只在当前块内有效,执行到块外会被立即销毁;
③ 都没有提升机制;
④ 在同一作用域不能用重复定义已经存在的标识符。
区别:
① 无论是在严格模式下还是非严格模式下,都不可以为 const 定义的常量再赋值(注意:const声明不允许修改绑定,但允许修改值,如对象中的属性)。
② const 声明的是常量,而且必须初始化,值被设定后不可更改。