let、const、var的區別

  在JavaScript中,常見的聲明變量的方式有var、let、const;其中,let和const是ES6中出現的新的聲明變量的方式。

1、let

  let用來聲明變量,用法類似於 var,只不過使用let聲明的變量,只在其所在的塊級作用域中有效,在該作用域之外無效;

  let聲明的變量在一個作用域中只能聲明一次,如果重複聲明多次,會報錯如下:Uncaught SyntaxError: Identifier 'a' has already been declared

  let不能在函數中重新聲明參數

2、const

  const聲明的是一個只讀的常量,一旦聲明,值將無法改變;

  對於const來說,只聲明不賦值就會報錯;const聲明變量之後必須立即初始化;如果不初始化,即會出現如下錯誤:Uncaught SyntaxError: Missing initializer in const declaration

  const保證的並不是變量的值不得改動,而是變量指向的那個內存地址所保存的數據不得改動;

  對於複合型數據來說,const只能保證這個指針式固定的,但是沒有辦法保證他指向的數據結構是不是可變的

3、暫時性死區

  暫時性死區的本質就是:只要已進入當前作用域,所要使用的變量就已經存在了,但是不可獲取,只有等到聲明變量的那一行代碼執行的時候,纔可以獲取和使用該變量。

  【注意】ES6中規定:暫時性死區、let和const語句不出現變量提升,主要是爲了減少運行時錯誤,防止在變量聲明前就使用這個變量。

4、let、const和var的區別

這三個關鍵字聲明變量的時候,都會存在變量提升,主要區別如下:

  - var在聲明變量的時候,如果沒有賦值,會默認被初始化爲undefined;

  - let/const在聲明變量的時候,會先創建變量,但是不會初始化變量,只有在聲明語句執行的時候變量纔會被賦值;

  - let在聲明語句執行的時候,如果沒有被賦值,會默認賦值爲undefined;const聲明的是一個常量,在執行的時候必須被初始化;如果沒有被賦值,則會報錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章