var,let,const區(qū)別


let?和?const以及var都是js用來生命變量的方法?他們?nèi)齻€的對比是一個高頻面試題

?var?生命的變量在代碼塊外也可以獲取到?并且存在變量提升?所謂變量提升指的是將變量的聲明提升至當(dāng)前作用域的最頂部

?{

? ? ?console.log(a)

? ? ? ?var?a?=?1

? ? ?}

????//?上面代碼的運行順序本質(zhì)上是

? ? ?{

? ? ?var?a;?//?一個變量在聲明了但未賦值的情況下?他的值是默認(rèn)值也就是undefined

? ? ? ?console.log(a)

? ? a?=?1

? ? ?}

????//?let聲明會將當(dāng)前代碼塊轉(zhuǎn)化為一個暫時性的死區(qū)?在外部無法獲取代碼塊內(nèi)聲明的變量?let聲明的變量沒有變量提升?所以不能在聲明之前使用

????//?let?聲明的變量如果沒有賦值?那么他的默認(rèn)值就是undefined?可以重新賦值

????{

??????//?console.log(a)

??????//?let?a?=?1?

??????let?a;

??????a?=?2

??????console.log(a)

????}

//?const聲明會將當(dāng)前代碼塊轉(zhuǎn)化為一個暫時性的死區(qū)?在外部無法獲取代碼塊內(nèi)聲明的變量

????//?const?聲明的變量沒有變量提升?所以不能在聲明之前使用

????//?const?聲明的是一個常量?一旦聲明變量的值就不能改變了

????//?const?聲明變量不能重新賦值?但是如果值是一個引用數(shù)據(jù)類型?引用數(shù)據(jù)類型內(nèi)部的數(shù)據(jù)可以修改

????{

???????const?obj?=?{

????????name:?'zhangsan'

??????}

??????obj.name?=?'lisi'

??????console.log(obj)

????}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容