1. let 的命令
? ? ? 基本用法
? ? ? ? ES6 新增了let命令艾少,用來聲明變量脉让。它的用法類似于var铸磅,但是所聲明的變量,只在let命令所在的代碼塊內(nèi)有效慕匠。
? ? ? ? for循壞的計數(shù)器饱须,計數(shù)器i只在for循壞體內(nèi)有效,在循環(huán)體外引用就會報錯台谊。
? ? ? ? 下面的代碼如果使用var蓉媳,最后輸出的是10。
上面代碼中锅铅,變量i是var命令聲明的酪呻,在全局范圍內(nèi)都有效,所以全局只有一個變量i盐须。每一次循環(huán)玩荠,變量i的值都會發(fā)生改變,而循環(huán)內(nèi)被賦給數(shù)組a的函數(shù)內(nèi)部的console.log(i)贼邓,里面的i指向的就是全局的i阶冈。也就是說,所有數(shù)組a的成員里面的i塑径,指向的都是同一個i女坑,導(dǎo)致運行時輸出的是最后一輪的i的值,也就是10统舀。
如果使用let匆骗,聲明的變量僅在塊級作用域內(nèi)有效,最后輸出的是6绑咱。
上面代碼中绰筛,變量i是let聲明的,當前的i只在本輪循環(huán)有效描融,所以每一次循環(huán)的i其實都是一個新的變量铝噩,所以最后輸出的是6。你可能會問窿克,如果每一輪循環(huán)的變量i都是重新聲明的骏庸,那它怎么知道上一輪循環(huán)的值,從而計算出本輪循環(huán)的值年叮?這是因為 JavaScript 引擎內(nèi)部會記住上一輪循環(huán)的值具被,初始化本輪的變量i時,就在上一輪循環(huán)的基礎(chǔ)上進行計算只损。
2.const的命令
? 基本用法
? ? const聲明一個只讀的常量一姿。一旦聲明七咧,常量的值就不能改變。
上面的代碼表明改變常量的值會報錯叮叹。
const聲明的變量不得改變值艾栋,這意味著,const一旦聲明變量蛉顽,就必須立即初始化蝗砾,不能留到以后賦值。
上面代碼表示携冤,對于const來說悼粮,只聲明不賦值,就會報錯曾棕。
const的作用域與let命令相同:只在聲明所在的塊級作用域內(nèi)有效扣猫。