ES6專題--1.let和const

let(變量) 與 const(常量)

(獲取最新完整前端課程關(guān)注vx公眾號(hào):前端拓路者coder,回復(fù):資料)

  1. 之前定義變量,用 var 關(guān)鍵字;有如下主要缺點(diǎn):
    • 存在變量提升問(wèn)題,降低 js 代碼的可閱讀性
    • 沒(méi)有塊級(jí)作用域,容易造成變量污染
1.  console.log (s);
var s= 10;
//打印的結(jié)果:undefined,說(shuō)明var聲明的確實(shí)是有變量提升的問(wèn)題
2.
 for (var i = 0; i<10; i++ ) {
    
 }
 console.log(i) //10
// 在for循環(huán)中我們希望i只在for循環(huán){}內(nèi)使用,然而在外部也能打印出來(lái),
//說(shuō)明var 定義的變量沒(méi)有塊級(jí)作用域
  1. let 主要特性:
    • 不存在變量提升問(wèn)題,只有定義之后才能使用此變量
    • 有 { } 作用域
console.log(a)
let a = 10 ;
//產(chǎn)生報(bào)錯(cuò):VM55:1 Uncaught ReferenceError: a is not defined
//說(shuō)明let 不存在變量提升問(wèn)題,只有定義之后才能使用此變量

 
 for (let i = 0; i<10; i++ ) {

}
 console.log(i)
//產(chǎn)生報(bào)錯(cuò):VM60:4 Uncaught ReferenceError: i is not defined
//說(shuō)明有 { } 作用域--塊級(jí)作用域
  1. const 主要特性:
    • 不存在變量提升問(wèn)題,只有定義之后才能使用此變量
    • const 定義的常量,無(wú)法被重新賦值
    • 當(dāng)定義常量的時(shí)候,必須定義且初始化,否則報(bào)語(yǔ)法錯(cuò)誤
    • const 定義的常量,也有 塊級(jí)作用域
const  a = 10;
a = 12;
console.log (a)
//產(chǎn)生報(bào)錯(cuò):VM65:1 Uncaught SyntaxError: Identifier 'a' has already been declared
//說(shuō)明無(wú)法被重新賦值   賦值后會(huì)報(bào)錯(cuò)

 
const d 

//執(zhí)行的時(shí)候會(huì)報(bào)一個(gè)錯(cuò) Uncaught SyntaxError: Missing initializer in const declaration
//說(shuō)明有 當(dāng)定義常量的時(shí)候,必須定義且初始化,否則報(bào)語(yǔ)法錯(cuò)誤
//其實(shí)我們可以想到如果不給初始值的話,我們又不能給他重新賦值,
//所以他一直是undefined,所以沒(méi)有任何意義

那么看看const的塊級(jí)作用域的體驗(yàn)的吧

  for ( let i = 0; i < 10; i++){
        const a = 'hello';
        console.log (a)
    }

執(zhí)行上述代碼我們會(huì)發(fā)現(xiàn)是打印出10個(gè)hello
但是代碼翻譯一下不是這樣的嗎??

    const a = 'hello';
    const a = 'hello';
    const a = 'hello';
    const a = 'hello';
    const a = 'hello';
    const a = 'hello';
    const a = 'hello';
    const a = 'hello';
    const a = 'hello';
    const a = 'hello';
    console.log (a)

這樣不用看,肯定是報(bào)錯(cuò)的,因?yàn)閏onst 定義的常量,無(wú)法被重新賦值
但是在循環(huán)里為什么沒(méi)有報(bào)錯(cuò)而是每個(gè)打印出來(lái)的???

這是應(yīng)為for循環(huán)每次循環(huán)都是會(huì)建立一個(gè){}作用域,在當(dāng)前次循環(huán)的{}作用域中會(huì)定義一個(gè)常量打印出來(lái),及每次循環(huán)都會(huì)創(chuàng)建一個(gè)獨(dú)立的{},這樣就好理解啦!!!

如果這個(gè)文章對(duì)你有用的話,歡迎點(diǎn)贊轉(zhuǎn)發(fā)關(guān)注,讓更多的小伙伴看到呀,畢竟分享是一個(gè)程序員最基本的美德!!!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容