JS中的const命令你真懂它嗎
const 定義
const聲明一個只讀的常量 。一旦聲明, 常量的值就不能改變。
常量 所謂的常量就是不能改變的值
const PI = 3.1415; PI // 3.1415 PI = 3; // TypeError: Assignment to constant variable.
上面代碼表明改變常量的值會報錯。
const聲明的變量不得改變值,這意味著,const一旦聲明變量,就必須立即初始化,不能留到以后賦值。
我們都知道const一般聲明一個只讀的常量,聲明之后就不能修改了,并且聲明時必須初始化
const message = 'hello' message // hello
const message // ❌報錯SyntaxError: Missing initializer in const declaration
const message = 'hello' message ='world' // 報錯TypeError: Assignment to constant variable.
那大家有沒有遇到這樣的情況
const dog = {}
dog.name = 'wangcai'
dog // {name: "wangcai"}
奇怪,上面的例子明明改變了變量的值,為什么沒有報錯?
下面我們就探究一下const的本質(zhì)
本質(zhì)
其實const保證的并不是變量的值不動,而是變量指向的內(nèi)存地址不得改動
可能有點抽象,我們來細細分析一下const聲明的全過程
const message = 'hello'
- js看到變量message后,會給message分配一個空房間(內(nèi)存空間)
- 看到等號右側(cè)的字符串‘hello'時,會立馬給它安排另一個房間,并把‘hello'放到這個房間
- js會拿小本本抄下這個房間的房間號(內(nèi)存地址)
- 把這個房間號放到message這個房間里面,這時message中存儲的就是hello字符串的存儲地址(即指針)
當我們再次賦值時
message = 'word'
js會將存儲‘word'字符串的地址賦給message,而message又是用const定義的變量,不可以改變變量里存儲的內(nèi)存地址,這時就會❌報錯
而當遇到下面這種情況
const dog = {}
dog.name = 'wangcai'
dog // {name: "wangcai"}
則可以理解為
dog中存儲的是對象的房間號(內(nèi)存地址)
dog.name= 'wangcai',在給對象添加屬性的過程,并沒有改變這個地址,所以結(jié)果正常顯示
劃重點
const保證的并不是變量的值不動,而是變量指向的內(nèi)存地址不得改動
到此這篇關(guān)于JS中的const命令你真懂它嗎的文章就介紹到這了,更多相關(guān)JS const命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
理解javascript中的回調(diào)函數(shù)(callback)
這篇文章主要介紹了理解javascript中的回調(diào)函數(shù)(callback),本文著重于對回調(diào)函數(shù)概念的理解,需要的朋友可以參考下2014-09-09
JavaScript編寫點擊查看大圖的頁面半透明遮罩層效果實例
這篇文章主要介紹了JavaScript制作點擊查看大圖的頁面遮罩層效果實例,透明部分這里使用的是CSS3的rgba,兼容性還是過得去的,需要的朋友可以參考下2016-05-05
JS中map與forEach無法跳出循環(huán)及every和some的使用
在我們平時使用習慣中,for循環(huán)里要跳出整個循環(huán)是使用break,但在數(shù)組中用forEach循環(huán)或者map如要退出整個循環(huán)使用break會報錯,使用return也不能跳出循環(huán),下面這篇文章主要介紹了關(guān)于JS中map與forEach無法跳出循環(huán)及every和some的使用的相關(guān)資料,需要的朋友可以參考下2023-05-05
JavaScript canvas動畫實現(xiàn)時鐘效果
這篇文章主要為大家詳細介紹了JavaScript canvas動畫實現(xiàn)時鐘效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-02-02
JavaScript中內(nèi)存泄漏的介紹與教程(推薦)
內(nèi)存泄露是指一塊被分配的內(nèi)存既不能使用,又不能回收,直到瀏覽器進程結(jié)束。下面這篇文章主要給的大家介紹了關(guān)于JavaScript中內(nèi)存泄漏的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-06-06

