ES6變量聲明——let和const

ES6之前變量聲明

作者:米書林
參考文章:《菜鳥教程》、《 ECMAScript 6 入門》(阮一峰)

聲明方式:

var a = 123;

特點(diǎn):

-var變量可以重復(fù)聲明,后面聲明的變量會(huì)覆蓋前面的變量

例如:

var a = 1;
var a = 2;
console.log(a); // 2
-無(wú)法限制變量的修改(沒有常量的概念)

例如:

var PIE = 3.14;
PIE =3;
console.log(PIE);  // 3
-沒有塊級(jí)作用域,即大括號(hào)內(nèi)聲明的變量大括號(hào)外也能使用
var str = "1233";
if(str){
 var str1 = str;
}
console.log(str1);  \\ 1233
-var聲明的變量,先使用再聲明,初始化值為:undefined

例如:

console.log(a1);  // undefined
var a1=1;
console.log(a1);  // 1

這是因?yàn)樵贘avaScript中帆吻,變量的聲明會(huì)被提升普泡。
我們可以把JavaScript中的變量和函數(shù)定義大概分成三個(gè)過程:
-- 創(chuàng)建
-- 初始化
-- 賦值
再使用var定義變量的時(shí)候創(chuàng)建初始化被提升了

ES6變量聲明

ES6引入了let和const來(lái)聲明變量

let

let聲明變量的方式

let a = 123;

let聲明變量的特點(diǎn):

-變量不能重復(fù)聲明

例如:

let a = 1;
let a = 2;
console.log(a);

上面代碼瀏覽器會(huì)拋出錯(cuò)誤:
Uncaught SyntaxError: Identifier 'a' has already been declared

但需要注意的是播掷,在for循環(huán)中變量似乎能重復(fù)聲明
例如:

for (let i = 0; i < 10; i++) {
        let s = "a";
        console.log(s);    //這里會(huì)輸出10個(gè)a
    }

什么原因呢?
其實(shí)每個(gè)循環(huán)每執(zhí)行一次都有一個(gè)大括號(hào){}撼班,{}內(nèi)的代碼屬于一個(gè)代碼塊叮趴,let聲明的變量屬于塊級(jí)作用域,所以看上去能重復(fù)聲明权烧。

-定義的變量可以被修改

例如:

let c = 1;
c++;
console.log(c); //2
-定義的變量是塊級(jí)作用域的變量

例如:

{
  let a = 1;
}
console.log(a);

上面代碼瀏覽器會(huì)報(bào)錯(cuò):
VM146:4 Uncaught ReferenceError: b is not defined at <anonymous>:4:13

- 必須先聲明后使用

例如:

console.log(a);
let a = 12;

上面代碼瀏覽器會(huì)報(bào)錯(cuò):
VM1232:1 Uncaught ReferenceError: Cannot access 'sssa' before initialization at <anonymous>:1:13
這是因?yàn)閘et定義的變量處在一個(gè)自塊頂部到初始化處理的暫時(shí)性死區(qū)中,我們可以理解為我們?cè)谑褂米兞康臅r(shí)候let定義的變量只完成了創(chuàng)建眯亦,沒有進(jìn)行初始化

const

const聲明變量的方式:

const s = 1;

const 聲明常量的特點(diǎn):

-常量不能重復(fù)聲明,同let
-常量不能被修改

例如:

const p  = 1;
p=2;

上面的代碼瀏覽器會(huì)報(bào)錯(cuò):
VM875:1 Uncaught TypeError: Assignment to constant variable. at <anonymous>:1:2

- 必須先聲明后使用

總結(jié):
ES6變量的聲明加入的常量的聲明和變量塊級(jí)作用域的新特性般码。

以下文字是菜鳥教程對(duì)const定義常量原理的描述

const 如何做到變量在聲明初始化之后不允許改變的妻率?其實(shí) const 其實(shí)保證的不是變量的值不變,而是保證變量指向的內(nèi)存地址所保存的數(shù)據(jù)不允許改動(dòng)板祝。此時(shí)宫静,你可能已經(jīng)想到,簡(jiǎn)單類型和復(fù)合類型保存值的方式是不同的券时。是的孤里,對(duì)于簡(jiǎn)單類型(數(shù)值 number、字符串 string 橘洞、布爾值 boolean),值就保存在變量指向的那個(gè)內(nèi)存地址捌袜,因此 const 聲明的簡(jiǎn)單類型變量等同于常量。而復(fù)雜類型(對(duì)象 object炸枣,數(shù)組 array虏等,函數(shù) function),變量指向的內(nèi)存地址其實(shí)是保存了一個(gè)指向?qū)嶋H數(shù)據(jù)的指針适肠,所以 const 只能保證指針是固定的霍衫,至于指針指向的數(shù)據(jù)結(jié)構(gòu)變不變就無(wú)法控制了,所以使用 const 聲明復(fù)雜類型對(duì)象時(shí)要慎重侯养。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末敦跌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子逛揩,更是在濱河造成了極大的恐慌柠傍,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件息尺,死亡現(xiàn)場(chǎng)離奇詭異携兵,居然都是意外死亡疾掰,警方通過查閱死者的電腦和手機(jī)搂誉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)静檬,“玉大人炭懊,你說我怎么就攤上這事并级。” “怎么了侮腹?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵嘲碧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我父阻,道長(zhǎng)愈涩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任加矛,我火速辦了婚禮履婉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘斟览。我一直安慰自己毁腿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布苛茂。 她就那樣靜靜地躺著已烤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪妓羊。 梳的紋絲不亂的頭發(fā)上胯究,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音躁绸,去河邊找鬼唐片。 笑死,一個(gè)胖子當(dāng)著我的面吹牛涨颜,可吹牛的內(nèi)容都是我干的费韭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼庭瑰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼星持!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起弹灭,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤督暂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后穷吮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逻翁,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年捡鱼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了八回。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缠诅,靈堂內(nèi)的尸體忽然破棺而出溶浴,到底是詐尸還是另有隱情,我是刑警寧澤管引,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布士败,位于F島的核電站,受9級(jí)特大地震影響褥伴,放射性物質(zhì)發(fā)生泄漏谅将。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一重慢、第九天 我趴在偏房一處隱蔽的房頂上張望戏自。 院中可真熱鬧,春花似錦伤锚、人聲如沸擅笔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)猛们。三九已至,卻和暖如春狞洋,著一層夾襖步出監(jiān)牢的瞬間弯淘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工吉懊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庐橙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓借嗽,卻偏偏與公主長(zhǎng)得像态鳖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子恶导,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345