最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ES6使用 const 聲明過(guò)程詳解

 更新時(shí)間:2023年08月17日 10:09:36   作者:帝博格T-bag  
這篇文章主要介紹了ES6使用 const 聲明,本文給大家介紹的非常詳細(xì)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、不屬于頂層對(duì)象window

使用const關(guān)鍵字 聲明的變量,不會(huì)掛載到window屬性上

const a = 5
console.log(a)
console.log(window.a)
// 5
// undefined

二、不允許重復(fù)聲明

使用const關(guān)鍵字不允許重復(fù)聲明相同的變量

cosnt a = 5
cosnt a = 6
// Uncaught SyntaxError: Unexpected identifier 'a'
不能重復(fù)聲明a

三、不存在變量提升

使用const 關(guān)鍵字聲明的變量,不會(huì)把變量提前代碼最前面聲明,而是執(zhí)行時(shí)聲明

四、暫時(shí)性死區(qū)

暫時(shí)性死區(qū):先使用了變量, 后 使用 const 關(guān)鍵字 聲明,就會(huì)出現(xiàn)暫時(shí)性死區(qū)

if(true) {
    console.log(a)
    const a = 5
}
// Uncaught ReferenceError: Cannot access 'a' before initialization
// 初始化前無(wú)法訪問(wèn)a

五、塊級(jí)作用域

再大括號(hào)里面,使用const關(guān)鍵字聲明的變量,就會(huì)產(chǎn)生有塊級(jí)作用域的,只能在大括號(hào)內(nèi)部使用,大括號(hào)外無(wú)法使用

if (true) {
	const a = 5
}
console.log(a)
// Uncaught ReferenceError: a is not defined
// a 再大括號(hào)外沒(méi)有聲明

六、const的獨(dú)有特性

1. 定義

1.常量: 使用const關(guān)鍵字聲明的變量,叫做常量,不能被修改

2. 聲明常量的方式

ES5中聲明一個(gè)常量

// 定義一個(gè)新的屬性
Object.defineProperty(window, 'PI', {
	value: 3.14,
	writable: false, // 是否可修改的, false表示不可以修改
})
console.log(PI) // 3.14
PI = 5
console.log(PI) // 3.14 ,因?yàn)椴豢梢员恍薷?/pre>

2.ES6 中聲明一個(gè)常量

const a = 5;
a = 6;
// Uncaught TypeError: Assignment to constant variable.
// 不能修改常量的值

3. 常量必須再聲明時(shí)賦值

const a;
a = 5
//  Uncaught SyntaxError: Missing initializer in const declaration
// 常量必須再聲明時(shí)賦值

4. 使用const 聲明的變量 為對(duì)象時(shí),可以被修改

const obj = {
	name: 'xiaoxiao',
	age: 18
}
console.log(obj)
// {name: 'xiaoxiao', age: 18}
obj.school = 'imooc'
console.log(obj)
// {name: 'xiaoxiao', age: 18, school: 'imooc'}

5. JS 中的變量是如何存儲(chǔ)的

JS 里面有兩種存儲(chǔ)形式,一種叫棧內(nèi)存(stack),一種叫堆內(nèi)存(heap)

1.基本數(shù)據(jù)類(lèi)型(Boolean、Null、Undefined、Number、String、Symbol) 是存儲(chǔ)在棧內(nèi)存里面

2.引用數(shù)據(jù)類(lèi)型:Object(在JS中除了基本數(shù)據(jù)類(lèi)型以外的都是對(duì)象,數(shù)據(jù)是對(duì)象,函數(shù)是對(duì)象,正則表達(dá)式是對(duì)象)是存儲(chǔ)在堆內(nèi)存里面的

在這里插入圖片描述

PS:使用const關(guān)鍵字聲明的變量,變量屬于基本類(lèi)型,即使用棧內(nèi)存進(jìn)行存儲(chǔ),則不可以修改

PS:使用const關(guān)鍵字聲明的變量,變量屬于引用數(shù)據(jù)類(lèi)(對(duì)象),即使用堆內(nèi)存進(jìn)行存儲(chǔ),就可以修改

const arr = [1, 2, 3]
arr.push(4)
console.log(arr)
// [1,2,3,4]

PS: const定義的變量,基本數(shù)據(jù)類(lèi)型不能夠被重新賦值,引用數(shù)據(jù)類(lèi)型可以被重新賦值, 因?yàn)橐脭?shù)據(jù)類(lèi)型真正是存儲(chǔ)在堆內(nèi)存里面的,const聲明的常量不改動(dòng),指的是變量所指向的哪個(gè)內(nèi)存地址不能改動(dòng),引用數(shù)據(jù)類(lèi)型引用地址沒(méi)有改變,只是地址里面存儲(chǔ)的東西改變了。

生活例子:使用const聲明一個(gè)變量, 當(dāng)變量為基礎(chǔ)數(shù)據(jù)類(lèi)型時(shí),是一個(gè)具體的實(shí)物, 并且內(nèi)部空間所存放的東西不能被改變,就像一個(gè)蘋(píng)果、梨子、一個(gè)人, 一個(gè)動(dòng)物,你把蘋(píng)果里面蘋(píng)果核替換成梨子核, 它就不是一個(gè)蘋(píng)果了。

使用const聲明一個(gè)變量,當(dāng)變量為引用數(shù)據(jù)類(lèi)型時(shí),就像是一個(gè)容器,比如 書(shū)包、盒子、內(nèi)部空間所存放的東西可以改變,書(shū)包里面放了書(shū)籍,可以替換成漫畫(huà),它還是一個(gè)書(shū)包

6. 如何使const 聲明變量為對(duì)象時(shí),不可以改變呢

1.Object.freeze 凍結(jié)一個(gè)對(duì)象的屬性,不能被修改

const obj = {
	name: 'xiaoxiao',
	age: 18
}
Object.freeze(obj)
console.log(obj)
// {name: 'xiaoxiao', age: 18}
obj.school = 'imooc'
console.log(obj)
// {name: 'xiaoxiao', age: 18}

2.Object.freeze 只能凍結(jié)對(duì)象的第一層屬性

const obj = {
	name: 'xiaoxiao',
	age: 18,
    sikll: {
        name: 'code',
        year: 11
    }
}
Object.freeze(obj)
obj.school = 'imooc'
obj.sikll.year = 13
console.log(obj)
/*
{
    "name": "xiaoxiao",
    "age": 18,
    "sikll": {
        "name": "code",
        "year": 13
    }
}
*/

PS:第二層的屬性沒(méi)有被凍結(jié)

3.如何凍結(jié)第二層

const obj = {
	name: 'xiaoxiao',
	age: 18,
    sikll: {
        name: 'code',
        year: 11
    }
}
Object.freeze(obj) // 凍結(jié)第一層屬性,不可以被修改
Object.freeze(obj.sikll) // 凍結(jié)第二層屬性,不可以被修改
obj.school = 'imooc'
obj.sikll.year = 13
console.log(obj)
/*
{
    "name": "xiaoxiao",
    "age": 18,
    "sikll": {
        "name": "code",
        "year": 11
    }
}
*/

4.Object.freeze 凍結(jié)數(shù)組后,再給數(shù)組添加值,會(huì)報(bào)錯(cuò)

const arr = [1,2,3]
Object.freeze(arr)
arr.push(4)
console.log(arr)
// Uncaught TypeError: Cannot add property 3, object is not extensible
// 無(wú)法添加屬性 3,對(duì)象不可擴(kuò)展

七. const和let的使用場(chǎng)景

1.當(dāng)你定義當(dāng)前變量時(shí),需要考慮當(dāng)前變量再后續(xù)邏輯中,是否會(huì)被改變,如果確認(rèn)后續(xù)不會(huì)被改變,則使用const,如果確認(rèn)后續(xù)會(huì)被改變,則使用let。

到此這篇關(guān)于ES6使用 const 聲明的文章就介紹到這了,更多相關(guān)ES6使用 const 聲明內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

贵港市| 上虞市| 宁津县| 宁乡县| 四会市| 江北区| 汉中市| 巧家县| 苏州市| 西乌| 汝州市| 志丹县| 长海县| 临邑县| 永兴县| 伊川县| 微山县| 怀宁县| 霞浦县| 铅山县| 河北省| 和顺县| 庆城县| 海南省| 屯昌县| 翁牛特旗| 兖州市| 庆元县| 板桥市| 波密县| 珠海市| 新巴尔虎左旗| 新野县| 扎兰屯市| 策勒县| 塔河县| 中卫市| 泽州县| 金坛市| 日土县| 赤城县|