JS中的const命令你真懂它嗎
const 定義
const聲明一個(gè)只讀的常量 。一旦聲明, 常量的值就不能改變。
常量 所謂的常量就是不能改變的值
const PI = 3.1415; PI // 3.1415 PI = 3; // TypeError: Assignment to constant variable.
上面代碼表明改變常量的值會(huì)報(bào)錯(cuò)。
const聲明的變量不得改變值,這意味著,const一旦聲明變量,就必須立即初始化,不能留到以后賦值。
我們都知道const一般聲明一個(gè)只讀的常量,聲明之后就不能修改了,并且聲明時(shí)必須初始化
const message = 'hello' message // hello
const message // ❌報(bào)錯(cuò)SyntaxError: Missing initializer in const declaration
const message = 'hello' message ='world' // 報(bào)錯(cuò)TypeError: Assignment to constant variable.
那大家有沒(méi)有遇到這樣的情況
const dog = {} dog.name = 'wangcai' dog // {name: "wangcai"}
奇怪,上面的例子明明改變了變量的值,為什么沒(méi)有報(bào)錯(cuò)?
下面我們就探究一下const的本質(zhì)
本質(zhì)
其實(shí)const保證的并不是變量的值不動(dòng),而是變量指向的內(nèi)存地址不得改動(dòng)
可能有點(diǎn)抽象,我們來(lái)細(xì)細(xì)分析一下const聲明的全過(guò)程
const message = 'hello'
- js看到變量message后,會(huì)給message分配一個(gè)空房間(內(nèi)存空間)
- 看到等號(hào)右側(cè)的字符串‘hello'時(shí),會(huì)立馬給它安排另一個(gè)房間,并把‘hello'放到這個(gè)房間
- js會(huì)拿小本本抄下這個(gè)房間的房間號(hào)(內(nèi)存地址)
- 把這個(gè)房間號(hào)放到message這個(gè)房間里面,這時(shí)message中存儲(chǔ)的就是hello字符串的存儲(chǔ)地址(即指針)
當(dāng)我們?cè)俅钨x值時(shí)
message = 'word'
js會(huì)將存儲(chǔ)‘word'字符串的地址賦給message,而message又是用const定義的變量,不可以改變變量里存儲(chǔ)的內(nèi)存地址,這時(shí)就會(huì)❌報(bào)錯(cuò)
而當(dāng)遇到下面這種情況
const dog = {} dog.name = 'wangcai' dog // {name: "wangcai"}
則可以理解為
dog中存儲(chǔ)的是對(duì)象的房間號(hào)(內(nèi)存地址)
dog.name= 'wangcai',在給對(duì)象添加屬性的過(guò)程,并沒(méi)有改變這個(gè)地址,所以結(jié)果正常顯示
劃重點(diǎn)
const保證的并不是變量的值不動(dòng),而是變量指向的內(nèi)存地址不得改動(dòng)
到此這篇關(guān)于JS中的const命令你真懂它嗎的文章就介紹到這了,更多相關(guān)JS const命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
多選列表框動(dòng)態(tài)添加,移動(dòng),刪除,全選等操作的簡(jiǎn)單實(shí)例
本篇文章主要是對(duì)多選列表框動(dòng)態(tài)添加,移動(dòng),刪除,全選等操作的簡(jiǎn)單實(shí)例進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-01-01輸入自動(dòng)提示搜索提示功能的javascript:sugggestion.js
該js文件中的代碼實(shí)現(xiàn)了[輸入自動(dòng)搜索提示]功能,如百度、google搜索框中輸入一些字符會(huì)以下拉列表形式給出一些提示,提高了用戶體驗(yàn)2013-09-09微信小程序?qū)崿F(xiàn)觸底加載與下拉刷新的示例代碼
本文主要介紹了微信小程序?qū)崿F(xiàn)觸底加載與下拉刷新的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05關(guān)于JS Lodop打印插件打印Bootstrap樣式錯(cuò)亂問(wèn)題的解決方案
關(guān)于Lodop打印是個(gè)很牛的打印插件,但是打印Bootstrap的樣式的時(shí)候就容易錯(cuò)亂,下面通過(guò)本文給大家分享下這方面的問(wèn)題2016-12-12輕松學(xué)習(xí)Javascript閉包函數(shù)
這篇文章主要幫助大家輕松學(xué)習(xí)掌握J(rèn)avascript閉包函數(shù),從閉包的含義出發(fā),由淺入深學(xué)習(xí)Javascript閉包函數(shù),感興趣的小伙伴們可以參考一下2015-12-12JavaScript懶加載與預(yù)加載原理與實(shí)現(xiàn)詳解
這篇文章主要介紹了JavaScript懶加載與預(yù)加載,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09用innerhtml提高頁(yè)面打開(kāi)速度的方法
這篇文章介紹了用innerhtml提高頁(yè)面打開(kāi)速度的方法,有需要的朋友可以參考一下2013-08-08使用pcs api往免費(fèi)的百度網(wǎng)盤(pán)上傳下載文件的方法
百度個(gè)人云盤(pán)空間大,完全免費(fèi),而且提供了pcs api供調(diào)用操作文件,在平時(shí)的項(xiàng)目里往里面保存一些文件是很實(shí)用的。通過(guò)本文給大家介紹使用pcs api往免費(fèi)的百度網(wǎng)盤(pán)上傳下載文件的方法,感興趣的朋友一起學(xué)習(xí)吧2016-03-03