var、let 与 const

var 与 let

  ① var 声明的变量根据作用域分为全局变量和局部变量,let 是块级声明(块级作用域),在指定块(字符 { 和 } 之间的区域)的作用域之外无法访问 let 声明的变量。

  ② var 存在变量提升(hoisting)机制,let 不存在变量提升机制(所以 let 声明语句放在封闭代码块的顶部)。

  ③ 在同一作用域不能用 let 重复定义已经存在的标识符。

 

const 与 let

  相同:

  ① 声明的都是块级标识符;

   ② 只在当前块内有效,执行到块外会被立即销毁;

  ③ 都没有提升机制;

  ④ 在同一作用域不能用重复定义已经存在的标识符。

  区别:

  ① 无论是在严格模式下还是非严格模式下,都不可以为 const 定义的常量再赋值(注意:const声明不允许修改绑定,但允许修改值,如对象中的属性)。

  ② const 声明的是常量,而且必须初始化,值被设定后不可更改。

var 与 let / const 的另一个区别实在全局作用域中的行为不同。var 会创建一个新的全局变量作为全局对象,所以很可能无意中覆盖一个已经存在的全局属性。而let 和 const 会在全局作用域下创建一个新的绑定,不会添加为全局属性。

posted @ 2018-03-14 21:10  小历史-of-snow  阅读(132)  评论(0编辑  收藏  举报