第一個是聲明過程:

var:
遇到有var的作用域,在任何語句執行器都已經完
成了聲明和初始化,也就是變量提升並且拿到
undefined的原因。
let:
解析器進入一個塊級作用域,發現let關鍵字,變
量隻是先完成聲明,並沒有到初始化那一步。如果此
時在作用域提前訪問,會報錯 xx is not defined,這就
是暫時性死區的由來。等到解析到有let那一行時,才
會進入初始化階段。如果let那一行是賦值操作,則初
始化和賦值同時進行。
const和let一樣。

第二個是內存分配:

var:
會直接在棧內存裏預分配內存空間,然後等到實
際語句執行時,再存儲對應的變量,如果傳的是引用
類型,則在堆內存裏開辟一個內存空間存儲實際內
容,棧內存會存儲一個指向堆內存的指針
let:
不會在棧內存裏預分配內存空間,而且在棧內存
分配變量的時候,會檢查,如果有相同變量名存在就
會報錯
const:
不會分預配內存空間,棧內存分配變量時也會
做同樣的檢測。const存儲的變量是不可修改的,所以
對於基本類型來說無法修改定義的值,對於引用類型
來說無法修改棧內存裏分配的指針,但是可以修改指
針指向的對象裏麵的屬性

第三個是變量提升:

let隻是創建過程中提升,初始化過程並沒有提升,所
以會產生暫時性死區。
var的創建和初始化過程都提升了,所以賦值前訪問會
得到undefined

相關說明:

1、VIP會員無限製任意下載,免積分。立即前往開通>>

2、下載積分可通過日常 簽到綁定郵箱 以及 積分兌換 等途徑獲得!

3、本站資源大多存儲在雲盤,如出現鏈接失效請評論反饋,如有密碼,均為:www.ipipn.com。

4、所有站內資源僅供學習交流使用。未經原版權作者許可,禁止用於任何商業環境,否則後果自負。為尊重作者版權,請購買正版作品。

5、站內資源來源於網絡公開發表文件或網友分享,如侵犯您的權益,請聯係管理員處理。

6、本站提供的源碼、模板、軟件工具等其他資源,都不包含技術服務,請大家諒解!

7、源碼、模板等資源會隨著技術、壞境的升級而存在部分問題,還請慎重選擇。

PS.源碼均收集自網絡,如有侵犯閣下權益,請發信件至: admin@ipipn.com .


源站網 » let const var 的區別

發表評論

讚助本站發展 維持服務器消耗

全站源碼免費下載 立刻讚助