ES6 &&ES2016 and ES2017(三)

1.var to const/let

????????在ES6之前椰棘,var就像是js中變量聲明的國王一般,但同時他也存在著些許的問題。

var作用域

????????Scope也就是聲明的變量可以提供使用的地方澡罚。var是全局作用域或者函數(shù)作用域列荔,當var在函數(shù)外聲明時敬尺,他就是一個全局作用域枚尼,也就是在任何地方都可以去訪問該變量。當var是在函數(shù)內(nèi)部進行聲明時就是函數(shù)作用域砂吞,也就意味著只能在該功能中進行訪問署恍。

var tester = "hey hi";

function newFunction() {

var hello = "hello";

}

console.log(hello); // Uncaught ReferenceError: hello is not defined

在這里我們收到了一個關(guān)于hello未定義的報錯,因為hello的作用域是在函數(shù)內(nèi)部蜻直,在函數(shù)之外是不能訪問的盯质。

Hoisted of var

????????Hoisted是JS的一種機制(https://www.w3schools.com/js/js_hoisting.asp)也就是大家常說的變量提升。它的解釋是這樣的:將聲明移動到作用域的頂部概而。

console.log (greeter);//undefined? ? ? ? ? ? ?變量已經(jīng)聲明只是未賦值

var greeter = "say hello"

? ? ? ? 同樣因為該機制呼巷,也造成了 var 的一個弱點,像下邊的例子:

var av= "va";

if (true) {

var av= "av";

}

console.log(av)? ?//"av"

????????因為條件為 true 所以av被重新賦值為“av”赎瑰,如果您是故意這么做的當然沒有問題王悍,但當你并沒有意識到之前已經(jīng)定義過一個 av 變量,那么這就變成了一個問題餐曼,當你其他的代碼中同樣用到了av變量压储,就會造成很多的錯誤。所以let以及const就變得很有必要源譬。

let

????????let 在現(xiàn)在已經(jīng)可以說是變量聲明的首選集惋,因為它解決了上邊提到的var的問題。

let作用域

????????let是屬于塊級作用域瓶佳,通俗的說就是由{}限制的作用域芋膘。用一個例子來說明一下:

if (true) {

let av= "av";

}

console.log(av)? ?//avis not defined 我們可以看到在塊外部對其進行使用時會返回未定義的錯誤。

let可以被重新賦值霸饲,但不能重新聲明

就像var一樣为朋,聲明的變量可以在其作用域內(nèi)被重新賦值,但是let的變量不能在其作用域內(nèi)被重新聲明厚脉,當然變量作用域之外則可以繼續(xù)聲明习寸。如下:

let av="av";

let av="va" //Uncaught SyntaxError: Identifier 'av' has already been declared

hoisted of let

????????同var一樣,let也存在hoisted傻工,會在塊作用域的頂部創(chuàng)建霞溪,但是與var不同的是,var將會以undefined進行賦值中捆,而let則不會初始化該變量鸯匹,在初始化該變量之前去訪問將會造成“ReferenceError”的錯誤。變量處于從塊開始到初始化的“temporal dead zone”(暫時性死區(qū))泄伪。

CONST

const用來定義一個常量值殴蓬,const聲明的變量不能重新賦值,所以必須要在聲明變量的時候?qū)ψ兞窟M行賦值蟋滴。

hoisted of const

? ? ? ? 同let一樣染厅,const聲明只能在塊級作用域內(nèi)進行訪問痘绎。

const不能重新聲明不能重新賦值

? ? ? ? 這就意味著const聲明的變量,在其塊狀作用域內(nèi)是保持不變的肖粮。它不能重新聲明或者重新賦值孤页,如下:

const av ;//Uncaught SyntaxError: Missing initializer in const declaration

const av="av";

av="va";? //Uncaught TypeError: Assignment to constant variable.

當const去聲明一個對象是涩馆,這在某種程度上不同于const行施,雖然const的對象不能被更新,但是對象的屬性是可以被更新的凌净。如下:

const av={

ny:“cjk”

}

av.ny="lzll"; //并不會報錯

總結(jié):

1.var聲明是全局作用域或函數(shù)作用域悲龟,let而且const是塊作用域。

2.var變量可以在其范圍內(nèi)更新和重新聲明; let變量可以更新但不能重新聲明; const變量既不能更新也不能重新聲明冰寻。

3.它們都被提升到其范圍的頂部,但var變量初始化為undefined皿渗,let并且const變量未初始化斩芭。

4.var以及l(fā)et可以在聲明時不進行賦值,但const必須在初始化時進行賦值

最后編輯于
?著作權(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)自己被綠了。 大學(xué)時的朋友給我發(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)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,149評論 0 13
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持烘苹,譯者再次奉上一點點福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠片部,并抽取幸運大...
    HetfieldJoe閱讀 3,037評論 3 37
  • let 命令 塊級作用域 const 命令 頂層對象的屬性 global 對象 let 命令 基本用法 ES6 新...
    卞卞村長L閱讀 595評論 0 0
  • let 和 const 命令 let 命令 塊級作用域 const 命令 頂層對象的屬性 gl...
    安小明閱讀 981評論 0 0
  • 在很久很久以前镣衡,在一個平常人家里,誕生了一個十分漂亮的女嬰档悠,那女嬰長著一張嬌俏動人的鵝蛋臉廊鸥,雙眼炯炯有神,還未長大...
    雨后乍逢閱讀 569評論 1 2