ES6標(biāo)準(zhǔn)入門讀書筆記
第一章 基礎(chǔ)
1.let和const命令
(1).let用于聲明變量,所聲明的變量只在當(dāng)前代碼塊有效
特點(diǎn):不存在變量提升 所以在變量聲明之前就使用會報(bào)錯
暫時(shí)性死區(qū) 只要塊級作用域內(nèi)存在let命令,他所聲明的變量就綁定在該區(qū)域,不再受外部影響 如全局和塊內(nèi)都有同名變量 在塊內(nèi)操作是操作塊內(nèi)的那個變量
ES明確規(guī)定,如果區(qū)塊中存在let和const指令,則這個區(qū)塊對這些命令聲明的變量從一開始就形成封閉作用域,只要在聲明之前使用,就會報(bào)錯
不允許重復(fù)聲明 不允許在同一作用域重復(fù)聲明,因此不能在函數(shù)內(nèi)部聲明與參數(shù)同名的變量
tips:function bar(x = y, y = 2){
console.log(x,y);
} // 會報(bào)錯 因?yàn)楫?dāng)把y的值賦給x時(shí)y還沒有聲明
(2).塊級作用域
塊級作用域產(chǎn)生之前不合理的場景:
內(nèi)部變量可能會覆蓋外部變量 如內(nèi)部有與外部同名的變量聲明 由于變量聲明提升 所以內(nèi)層覆蓋外層
用來計(jì)數(shù)的變量泄露成全局變量 由于閉包問題 計(jì)數(shù)的變量不能釋放成為全局變量 失去計(jì)數(shù)功能
let實(shí)際上為js提供塊級作用域
特點(diǎn):
let定義的變量 外層代碼不受內(nèi)層代碼影響
內(nèi)層作用域可以定義與外層同名的變量
可以取代匿名函數(shù)
tips:
ES6規(guī)定,函數(shù)本身的作用域在其所在的塊級作用域中
在嚴(yán)格模式下,函數(shù)只能在頂層作用域和函數(shù)內(nèi)聲明,其他情況會報(bào)錯
浙公網(wǎng)安備 33010602011771號