淺談let和const的使用以及注意事項

在說let和const之前先簡單的說一下作用域,因為后面會有提到
ES5中的作用域有全局作用域和函數(shù)作用域壶栋,到了ES6來新增了:塊作用域
塊作用域簡單的說是:代碼中使用{}包起來的结胀,就是一個塊作用域

let

先看一個demo:

function test(){
  for (let i=1;i<3;i++) {
    console.log(i)
  }
  console.log(i)
}
image.png

結(jié)果報錯
1赞咙、i 脫離了塊作用域,let聲明的變量只有在塊作用域重用小 所以報錯
2糟港、我們沒有聲明i調(diào)用的時候應該報undefined錯誤攀操,這里報is not defined ,這是為什么呢秸抚?是因為es6默認(強制)開啟了嚴格模式“use strict”速和,如果在es5中需要開啟嚴格模式的話,在js文件的頂部加上“use strict”
嚴格模式:變量未聲明不能引用
3剥汤、let不允許在相同作用域內(nèi)颠放,重復聲明同一個變量。

// 報錯
function func() {
  let a = 10;
  var a = 1;
}

// 報錯
function func() {
  let a = 10;
  let a = 1;
}

只要塊級作用域內(nèi)存在let命令吭敢,它所聲明的變量就“綁定”(binding)這個區(qū)域碰凶,不再受外部的影響;
使用var則不會報錯省有,是因為var的變量提升的原因痒留;為了糾正這種現(xiàn)象,let命令改變了語法行為蠢沿,它所聲明的變量一定要在聲明后使用伸头,否則報錯

function test(){
  for (var i=1;i<3;i++) {
    console.log(i)
  }
  console.log(i)
}
image.png

const

const是定義常量的

function test() {
const PI = 3.1415926;
PI = 3.14;
console.log(PI)
}

報錯: SyntaxError: "" is read-only;
是因為const一旦定義不可被更改(這種說法不嚴謹,繼續(xù)看)一旦修改就會報錯: SyntaxError: "" is read-only

function test() {
  const c = {
  a:1
  } ;
  c.b = 2;
  console.log(c)
}
image.png

如上圖舷蟀,為什么const定義的c 可以修改其內(nèi)部屬性的值呢恤磷?
const 聲明的引用類型可以修改面哼,const聲明的是指向?qū)ο蟮闹羔槪羔槻荒茏兊菍ο笫强梢宰兊纳ú剑籧onst定義的基本類型不能修改

function test() {
  const PI ;
  PI = 3.14;
  console.log(PI)
}

const 聲明的同時必須賦值魔策,否則報錯: SyntaxError:Unexpected token

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市河胎,隨后出現(xiàn)的幾起案子闯袒,更是在濱河造成了極大的恐慌,老刑警劉巖游岳,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件政敢,死亡現(xiàn)場離奇詭異,居然都是意外死亡胚迫,警方通過查閱死者的電腦和手機喷户,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來访锻,“玉大人褪尝,你說我怎么就攤上這事∑谌” “怎么了河哑?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長哭懈。 經(jīng)常有香客問我灾馒,道長,這世上最難降的妖魔是什么遣总? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任睬罗,我火速辦了婚禮,結(jié)果婚禮上旭斥,老公的妹妹穿的比我還像新娘容达。我一直安慰自己,他們只是感情好垂券,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布花盐。 她就那樣靜靜地躺著,像睡著了一般菇爪。 火紅的嫁衣襯著肌膚如雪算芯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天凳宙,我揣著相機與錄音熙揍,去河邊找鬼。 笑死氏涩,一個胖子當著我的面吹牛届囚,可吹牛的內(nèi)容都是我干的有梆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼意系,長吁一口氣:“原來是場噩夢啊……” “哼泥耀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蛔添,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤痰催,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后作郭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陨囊,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年夹攒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胁塞。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡咏尝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出啸罢,到底是詐尸還是另有隱情编检,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布扰才,位于F島的核電站允懂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏衩匣。R本人自食惡果不足惜蕾总,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望琅捏。 院中可真熱鬧生百,春花似錦、人聲如沸柄延。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搜吧。三九已至市俊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滤奈,已是汗流浹背摆昧。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留僵刮,地道東北人据忘。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓鹦牛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親勇吊。 傳聞我的和親對象是個殘疾皇子曼追,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

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

  • let 和 const 命令 let 命令 塊級作用域 const 命令 頂層對象的屬性 gl...
    安小明閱讀 981評論 0 0
  • let 命令 塊級作用域 const 命令 頂層對象的屬性 global 對象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice閱讀 1,631評論 0 2
  • let 命令 塊級作用域 const 命令 頂層對象的屬性 global 對象 let 命令 基本用法 ES6 新...
    卞卞村長L閱讀 595評論 0 0
  • 1、let命令 作用域 let命令與var基本相似汉规,只是let所聲明的變量只在let代碼塊內(nèi)有效礼殊。 因為變量使用l...
    彩虹之夢閱讀 638評論 0 2
  • var存在的問題 問題1:JS沒有塊級作用域 請看這樣一條規(guī)則:在JS函數(shù)中的var聲明,其作用域是函數(shù)體的全部针史。...
    AmazRan閱讀 246評論 0 0