let 和 const 是 ECMAScript 2015(ECMAScript 6) 新增加的兩個(gè)重要JavaScript關(guān)鍵字。
let聲明的變量只在let命令所在的代碼塊 (即JavaScript塊級(jí)作用域(Block Scope)) 內(nèi)有效
const用于聲明一個(gè)或多個(gè)常量,聲明同時(shí)須進(jìn)行初始化,一旦聲明,常量值則不能再修改。但是使用const定義的常量對(duì)象或者常量數(shù)組是可變的,可對(duì)其對(duì)象或?qū)傩赃M(jìn)行添加和修改等操作,但不能對(duì)其進(jìn)行重新賦值。
在ES6之前,JavaScript只有兩種作用域:全局變量和局部變量。
全局變量: 在函數(shù)外聲明的變量
局部變量:在函數(shù)內(nèi)聲明的變量
注意這幾點(diǎn):
- 使用var關(guān)鍵字聲明的變量在任何地方都可以修改。
- 在相同的作用域或塊級(jí)作用域中,不能使用let關(guān)鍵字來(lái)重置var關(guān)鍵字聲明的變量。
- 在相同的作用域或塊級(jí)作用域中,不能使用let關(guān)鍵字來(lái)重置let關(guān)鍵字聲明的變量。
- let關(guān)鍵字在不同作用域,或不用塊級(jí)作用域中是可以重新聲明賦值的。
- 在相同的作用域或塊級(jí)作用域中,不能使用const關(guān)鍵字來(lái)重置var和let關(guān)鍵字聲明的變量。
- 在相同的作用域或塊級(jí)作用域中,不能使用const關(guān)鍵字來(lái)重置const關(guān)鍵字聲明的變量。
- const 關(guān)鍵字在不同作用域,或不同塊級(jí)作用域中是可以重新聲明賦值的。
- 使用var關(guān)鍵字聲明的全局作用域變量屬于window對(duì)象。
- 使用let關(guān)鍵字聲明的全局作用域變量不屬于window對(duì)象。
- var關(guān)鍵字定義的變量可以先使用后聲明。(JavaScript變量提升)
- let關(guān)鍵字定義的變量需要先聲明再使用。
- const關(guān)鍵字定義的變量需要先聲明再使用。