JavaScript let和const宣告

在函式作用域或全域性作用域中透過關鍵字var宣告的變數,無論在哪裡宣告,都會被當成在當前作用域頂部宣告的變數,這就是JavaScript的變數提升機制。我們看下面的程式碼:

JavaScript let和const宣告

變數宣告

這種變數提升機制在開發時會給我們造成很多的困擾,ECMAScript 6引入了let宣告,用法與var相同,不過用let宣告的變數不會被提升,可以把變數的作用域限制在當前程式碼塊中。

我們將上述程式碼中的變數用let進行宣告,如下所示:

JavaScript let和const宣告

let宣告

使用let宣告變數,還可以防止變數的重複宣告。例如在某個作用域下已經存在某個識別符號,此時再使用let關鍵字宣告它,就會丟擲錯誤,如下所示:

JavaScript let和const宣告

重複宣告變數

同一作用域下,不能使用let重複定義已經存在的識別符號,但如果在不同的作用域下,則是可以的,這一點請讀者注意,如下所示:

JavaScript let和const宣告

在不同的作用域下

ECMAScript 6還提供了const關鍵字,用於宣告常量。每個透過const關鍵字宣告的常量必須在宣告的同時進行初始化,如下所示:

JavaScript let和const宣告

const宣告常量

與let類似,在同一作用域下用const宣告已經存在的識別符號也會導致語法錯誤,無論該識別符號是使用var,還是let宣告的。

如果使用const宣告物件,物件本身的繫結不能修改,但物件的屬性和值是可以修改的,我們看下面的程式碼:

JavaScript let和const宣告

用const宣告物件