JavaScript中的var察净,let和const

在es6中驾茴,新增了兩種命名變量的方式:let和const。

1. let

作用域規(guī)則

在es6之前氢卡,只有var一種命名變量的方式锈至。var在當(dāng)前的塊級(jí)和子塊都會(huì)起作用,這樣就會(huì)出現(xiàn)一個(gè)JS的經(jīng)典問題---作用域問題译秦。這無疑給編程增加了難度峡捡,但并沒有提高編程的作用。為了解決這個(gè)問題筑悴,es6引進(jìn)了塊級(jí)作用域:let们拙。

let的聲明方法和var相似:

var a ;
let b ;

但作用的范圍有點(diǎn)不同。
如果只在當(dāng)前作用域或子集當(dāng)中使用雷猪,二者功能相似睛竣。但當(dāng)用到內(nèi)部函數(shù)的時(shí)候,let可以讓代碼更加簡單求摇。像下面這段代碼:

function varTest() {
  var x = 1;
  if (true) {
    var x = 2;  // 同樣的變量!
    console.log(x);  // 2,if當(dāng)中的x覆蓋了上一個(gè)x
  }
  console.log(x);  // 2
}
/********/
function letTest() {
  let x = 1;
  if (true) {
    let x = 2;  // 不同的變量射沟,和上一個(gè)x沒有任何關(guān)系
    console.log(x);  // 2
  }
  console.log(x);  // 1
}

在這段代碼中if語句就是一個(gè)代碼塊,let就是在這個(gè)塊級(jí)代碼中聲明了一個(gè)變量与境,且只作用于這個(gè)塊級(jí)作用域验夯。
再看另一個(gè)經(jīng)典的問題:

 for (var i = 0; i <= 5; i++) {
          div.onclick = function() {
              console.log(i);       //6
         };
 }

在這段代碼中,當(dāng)我們點(diǎn)擊div摔刁,輸出的結(jié)果為6挥转,因?yàn)楫?dāng)循環(huán)結(jié)束的時(shí)候(for之外),還會(huì)執(zhí)行一次共屈。
但如果把var改成let绑谣,結(jié)果就換不一樣:

 for (let i = 0; i <= 5; i++) {
          div.onclick = function() {
              console.log(i);       //5
         };
  }

這是因?yàn)閘et只在for這個(gè)塊級(jí)中起作用。

聲明提前

我們知道JavaScript中有一個(gè)特性拗引,那就是聲明提前借宵。

console.log(a) ; //不會(huì)報(bào)錯(cuò)
var a ;
console.log(b);  //報(bào)錯(cuò)
let b;

let不再有聲明提前的特性》鳎可以說這也降低了我們使用JavaScript的難度壤玫。

不能重復(fù)聲明

如果使用var聲明兩個(gè)變量名一樣的變量豁护,后面一個(gè)會(huì)覆蓋前面的,而let不允許這樣做欲间。

var a = 1;
var a = 2;
console.log(a) ;    //2
let b = 1;
let b = 2;          //報(bào)錯(cuò)

2. const

es6還引入了另一個(gè)變量聲明的方法const楚里。
const和C++中的const一樣,都是聲明了一個(gè)常量猎贴。const聲明的量是一個(gè)只讀的量班缎,不能修改。

const a = 1;
a = 2;  //報(bào)錯(cuò)

總結(jié):

JavaScript是一門10天之內(nèi)設(shè)計(jì)出來的語言嘱能,設(shè)計(jì)之初有著許多不完善的地方吝梅,但在es6之后虱疏,很多地方都完善好了惹骂。了解es6的新特性,對(duì)于我們學(xué)習(xí)使用JavaScript做瞪,有著巨大的作用对粪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市装蓬,隨后出現(xiàn)的幾起案子著拭,更是在濱河造成了極大的恐慌,老刑警劉巖牍帚,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儡遮,死亡現(xiàn)場離奇詭異,居然都是意外死亡暗赶,警方通過查閱死者的電腦和手機(jī)鄙币,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹂随,“玉大人十嘿,你說我怎么就攤上這事≡浪” “怎么了绩衷?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長激率。 經(jīng)常有香客問我咳燕,道長,這世上最難降的妖魔是什么乒躺? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任招盲,我火速辦了婚禮,結(jié)果婚禮上聪蘸,老公的妹妹穿的比我還像新娘宪肖。我一直安慰自己表制,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布控乾。 她就那樣靜靜地躺著么介,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜕衡。 梳的紋絲不亂的頭發(fā)上壤短,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音慨仿,去河邊找鬼久脯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛镰吆,可吹牛的內(nèi)容都是我干的帘撰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼万皿,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼摧找!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起牢硅,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蹬耘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后减余,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體综苔,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年位岔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了如筛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赃承,死狀恐怖妙黍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瞧剖,我是刑警寧澤拭嫁,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站抓于,受9級(jí)特大地震影響做粤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捉撮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一怕品、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧巾遭,春花似錦肉康、人聲如沸闯估。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涨薪。三九已至,卻和暖如春炫乓,著一層夾襖步出監(jiān)牢的瞬間刚夺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國打工末捣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侠姑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓箩做,卻偏偏與公主長得像莽红,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卒茬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

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

  • let 命令 塊級(jí)作用域 const 命令 頂層對(duì)象的屬性 global 對(duì)象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice閱讀 1,632評(píng)論 0 2
  • let 命令 塊級(jí)作用域 const 命令 頂層對(duì)象的屬性 global 對(duì)象 let 命令 基本用法 ES6 新...
    卞卞村長L閱讀 596評(píng)論 0 0
  • let 和 const 命令 let 命令 塊級(jí)作用域 const 命令 頂層對(duì)象的屬性 gl...
    安小明閱讀 981評(píng)論 0 0
  • 本文屬個(gè)人筆記馍管,不做詳解郭赐,僅供參考! let命令 基本用法 ES6 新增了let命令确沸,用來聲明變量捌锭。它的用法類似于...
    R_yan閱讀 29,022評(píng)論 6 18
  • 屋外墜白絮,池中游紅鯉罗捎。 海榴玉靨观谦,花笑青山翠怠晴。 歸故欲覓性含,石徑空凝滯,垂柳天陰翳鸳君。 燈火夜闌珊倒得,曉窗明泻红、金樽倒醉...
    劉小地閱讀 429評(píng)論 9 46