第2章 let和const命令

  1. ES6聲明變量的方法:var、function、let、const、import、class
  2. let命令用于聲明變量,其用法類似于var。let命令和var命令的區(qū)別:
    1. let命令所聲明的變量值在let命令所在的代碼塊內(nèi)有效,而var聲明的變量在全局環(huán)境中都有效。

    if(true){ let a=5; var b=2; } console.log(a); // ReferenceError: a is not defined console.log(b); // 2
    2. let不存在變量提升,而var存在變量提升現(xiàn)象。
    >console.log(typeof(x));// ReferenceError: a is not defined let x=5; console.log(a); // undefined var a=2;
    3. 在代碼塊內(nèi),使用let命令聲明變量之前,該變量都是不可用的。也就是存在“暫時(shí)性死區(qū)”現(xiàn)象。
    >var a=3; if(true){ a="abc"; // ReferenceError: a is not defined let a; }
    4. let不允許在相同作用域內(nèi)重復(fù)聲明同一個(gè)變量,而var可以多次聲明同一個(gè)變量。
    >var b="init b"; var b="second"; console.log(b); // "second" var a=10; let a=2; //報(bào)錯(cuò):“Identifier 'a' has already been declared”

  3. const命令用于聲明常量。一旦聲明,其值就不能改變。其特性與let相似,不存在常量提升,存在暫時(shí)性死去,作用域?yàn)槠鋲K級(jí)作用域,不允許重復(fù)聲明常量。

    const PI=3.1415; PI=2; // TypeError: Assignment to constant variable

  4. ES6規(guī)定,var命令和function命令聲明的全局變量依舊是全局對(duì)象的屬性,而let命令、const命令和class命令聲明的全局變量不屬于全局對(duì)象的屬性。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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