摘要:是新增加的關(guān)鍵字,作用是聲明一個(gè)只讀變量。暫時(shí)性死區(qū)塊級(jí)作用域聲明的值是基礎(chǔ)數(shù)據(jù)類型,那么這個(gè)變量的值就不可以改變。
const是ES6新增加的關(guān)鍵字,作用是聲明一個(gè)只讀變量。這個(gè)變量指向的內(nèi)容地址是不可以改動(dòng)的。
const a = 1 a = 4 // TypeError: Assignment to constant variable.
和let一樣,它也有暫時(shí)性死區(qū)和塊級(jí)作用域的特性。
// 暫時(shí)性死區(qū) console.log(b) // ReferenceError const b = 2
// 塊級(jí)作用域 if (true) { const c = 2 } console.log(c) // Uncaught ReferenceError: MAX is not defined
const聲明的值是基礎(chǔ)數(shù)據(jù)類型(Number,String,Boolean),那么這個(gè)變量的值就不可以改變。如果值是復(fù)合類型(主要是對(duì)象和數(shù)組),那么里面的屬性或者每一項(xiàng)則可以改變。因?yàn)閏onst只能保證這個(gè)指針是固定的,但是指向的數(shù)據(jù)結(jié)構(gòu)則不可以控制。
const d = {} d.name = "123" console.log(d.name) // "123" d = {} // TypeError: "d" is read-only
const f = [] f.push("123") // ["123"] console.log(f) // ["123"] f = [] // Uncaught TypeError: Assignment to constant variable.
如果想要將一個(gè)對(duì)象給鎖死,應(yīng)該使用Object.freeze
const e = Object.freeze({}) // 常規(guī)模式時(shí),下面一行不起作用 // 嚴(yán)格模式時(shí),該行會(huì)報(bào)錯(cuò) Uncaught TypeError: Cannot add property name, object is not extensible e.name = "123"
如果想要徹底鎖死,應(yīng)該將對(duì)象下面的所有屬性鎖死
function freezeObj(obj) { Object.freeze(obj) Object.keys(obj).forEach(function (v) { if (typeof obj[v] === "object") { freezeObj(obj[v]) } }) }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/107827.html
摘要:很多編程語(yǔ)言提供了關(guān)鍵詞聲明一個(gè)常量,在中也是提供了,但是在前端的與其他編程語(yǔ)言不同,其并不意味著聲明的變量就是一個(gè)常量。所以,在前端中到底如何實(shí)現(xiàn)一個(gè)常量可以凍結(jié)對(duì)象,不能新增和刪除屬性,同時(shí)對(duì)象已有屬性都是不可枚舉不可配置不可寫。 很多編程語(yǔ)言提供了const關(guān)鍵詞聲明一個(gè)常量,在ES6中也是提供了const,但是在前端的const與其他編程語(yǔ)言不同,其并不意味著聲明的變量就是一個(gè)...
摘要:學(xué)習(xí)筆記的使用其他特性用來(lái)聲明常量,聲明時(shí)必須初始化聲明的常量不能重新賦值對(duì)于基本類型,值不能改變對(duì)于引用類型,存儲(chǔ)的是一個(gè)地址,地址不能變,但對(duì)象本身是可變的如果不想后續(xù)更改對(duì)象,使用文檔用來(lái)凍結(jié)一個(gè)對(duì)象。該方法返回被凍結(jié)的對(duì)象。 let命令有的幾個(gè)特性,const也有。ES6學(xué)習(xí)筆記:let的使用 其他特性: 用來(lái)聲明常量,聲明時(shí)必須初始化 const PI;//SyntaxErr...
摘要:凡是在聲明之前就使用這些變量,就會(huì)報(bào)錯(cuò)。這在語(yǔ)法上,稱為暫時(shí)性死區(qū),簡(jiǎn)稱。同樣也不會(huì)聲明提升,也存在暫時(shí)死區(qū),只能在聲明之后使用,且和一樣不得重復(fù)聲明,不能重新賦值。全局環(huán)境中,會(huì)返回頂層對(duì)象。 showImg(https://segmentfault.com/img/remote/1460000018739573?w=3240&h=2160); 一、前提 解決ES5中只有全局作用域和...
摘要:和不同,沒(méi)有變量提升,聲明之前,該變量都是不可用的。聲明創(chuàng)建一個(gè)只讀的常量。這不意味著常量指向的值不可變,而是變量標(biāo)識(shí)符的值只能賦值一次。聲明同時(shí)必須賦值。 LET和const命令 var 變量聲明提升原則 var語(yǔ)句聲明的變量的作用域是當(dāng)前執(zhí)行位置的上下文 給一個(gè)非聲明變量賦值會(huì)隱式創(chuàng)建一個(gè)全局變量(全局object的一個(gè)屬性),注意這里是非聲明賦值 聲明和賦值是兩回事,注意區(qū)分,...
摘要:結(jié)合工作中使用情況,簡(jiǎn)單對(duì)進(jìn)行一些復(fù)習(xí)總結(jié),包括常用的語(yǔ)法,等,以及短時(shí)間內(nèi)要上手需要重點(diǎn)學(xué)習(xí)的知識(shí)點(diǎn)不同工作環(huán)境可能有一些差別,主要參考鏈接是阮一峰的博客以及外文博客阮老師大部分文章是直接翻譯的這個(gè)博客簡(jiǎn)介先說(shuō)一下,是一個(gè)標(biāo)準(zhǔn)化組織,他們 結(jié)合工作中使用情況,簡(jiǎn)單對(duì)es6進(jìn)行一些復(fù)習(xí)總結(jié),包括常用的語(yǔ)法,api等,以及短時(shí)間內(nèi)要上手需要重點(diǎn)學(xué)習(xí)的知識(shí)點(diǎn)(不同工作環(huán)境可能有一些差別),...
閱讀 1300·2023-04-25 19:33
閱讀 1183·2021-10-21 09:39
閱讀 3656·2021-09-09 09:32
閱讀 2633·2019-08-30 10:58
閱讀 1638·2019-08-29 16:17
閱讀 889·2019-08-29 15:29
閱讀 2902·2019-08-26 11:55
閱讀 2670·2019-08-26 10:33