在javascript中,我們都知道使用var來(lái)聲明變量。javascript是函數(shù)級(jí)作用域,函數(shù)內(nèi)可以訪問(wèn)函數(shù)外的變量,函數(shù)外不能訪問(wèn)函數(shù)內(nèi)的變量。本文給大家介紹ES6中l(wèi)et 和 const 的特性,具體內(nèi)容如下所示:
let的特性:
1.不存在變量提升現(xiàn)象:即聲明前使用,報(bào)ReferenceError。適用于for循環(huán)計(jì)數(shù)器。
2.暫時(shí)性死區(qū):即在塊級(jí)作用域內(nèi)使用let聲明變量,該變量只能在該作用域內(nèi)使用。
3.不允許重復(fù)聲明:let聲明過(guò)的變量不能再次聲明,否則報(bào)錯(cuò)。
const的特性:
1.不存在變量提升現(xiàn)象。
2.暫時(shí)性死區(qū)。
3.不可重復(fù)聲明。
4.聲明的是只讀常量,聲明時(shí)必須初始化。
5.本質(zhì)保存的是內(nèi)存地址,簡(jiǎn)單類型數(shù)據(jù)的值就保存在這個(gè)地址中,復(fù)合類型數(shù)據(jù)在這個(gè)地址中保存的是一個(gè)指針,這個(gè)指針指向的對(duì)象可以改變,單指針不可改變。
cost foo = {}; // 可以改變foo的屬性 foo.prop = 123; foo.prop //123 // 不可以使foo指向別的對(duì)象 foo = {}; //TypeError: "foo" is read-only
凍結(jié)對(duì)象:
// 徹底凍結(jié) var constantize = (obj) => { Object.freeze(obj); Object.keys(obj).forEach( (key, i) => { if( typeof obj[key] === 'object' ){ constantize( obj[key] ); } }); }
總結(jié)
以上所述是小編給大家介紹的ES6中l(wèi)et 和 const 的特性 ,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com