const 常量_var,let,const 的区别?
為了更好的了解var let const 的區別,我們就來簡單的了解它們的過程
相信有很多人都會面臨面試官問的這個問題
很多的同學都是簡單的認為 var聲明的變量會提升,而let const 不會,雖然可以這樣認為,但不完全對,
經過幾經波折,得出一個自己看得懂的結論
這次,我們就來看看它們三者的區別以及過程讓我們可以更好的了解它們
在JS引擎解析代碼的時候,遇到變量經歷不同的聲明方式的過程是不同的
1.通過var聲明的變量過程
consloe?過程如下:
? 1.var聲明的變量會提升到最頂部,創建出a變量
? 2.創建完a變量后會初始化為undefined
? 3.開始執行代碼
? 4.將變量值賦值給a變量
為什么在var聲明變量之前輸出這個變量為undefined的原因就一目了然了
2.通過let聲明變量的過程
let1.輸出結果:無法在初始化之前訪問 ' a ' 。
2.輸出結果:標識符“a”已經聲明
經過錯誤1.的提示,那么問題來了,let是會提升嗎?
? 過程如下:
? 1.let聲明的變量在創建過程中被提升
? 2.開始執行代碼,但未初始化 Temporary dead zone(也就是所謂的暫時性死區)
? 3.初始化代碼
? 4.在修改變量值的前提下,進行賦值
這就是為什么輸出的結果為:無法在初始化之前訪問 ' a '
錯誤2.使用let聲明變量無法聲明重復變量,所以拋出錯誤
有些同學看到暫時性死區會很懵逼的說,那是啥玩意兒?如然后各種度娘,其實你可以簡單的認為:在變量初始化之前,是無法使用這個變量的
3.通過const聲明的常量
const輸出的結果為:重新賦值了常量。也就是是你重新修改了const聲明的常量的值
const 和 let只有一個區別,那就是 const 聲明常量的過程只有兩步:
創建和初始化,但沒有賦值過程
因為沒有賦值過程,所以無法給const聲明的常量進行重新賦值,這就是為什么重新給常量賦值后會拋出錯誤的原因
const聲明的常量是什么?常量,顧名思義就是常用的變量,在判斷邏輯的情況下,我們有時候需要一個固定值來作為判斷條件,那么我們就會優先使用const進行聲明常量,而const聲明的常量移除了這個量的修改功能,也就是說 const聲明的量只無法修改其值,故稱為常量。
4.const 和 let 具有塊級作用域
{由此可見,const 和 let 聲明的常量/變量只限于當前作用域,在外部作用域是無法訪問到的,那么另一個問題就來了,它們兩者聲明的常量/變量是否屬于window呢?
let是否看完結果后,又發現了一項它們之間的區別,在全局作用域中使用var或者不使用var聲明的變量都是屬于window的,而let和const不是
總結
以上是生活随笔為你收集整理的const 常量_var,let,const 的区别?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 主机数,子网数,网络号,主机号
- 下一篇: 数据结构-链表3-循环链表