ES6新特性之var 與 let ,const的區(qū)別

let命令

  • let命令用來定義變量,其定義的變量只在代碼塊內(nèi)有效
    而var定義的變量在全局范圍內(nèi)都有效
{
var p=2;
let a = 1;
}
p // 2
a // ReferenceError
  • let命令沒有變量提升
    若在定義一個變量之前使用該變量則會拋出 ReferenceError 錯誤
    而var則會將該變量視為 undefined
p = 3;
let p;  // ReferenceError
console.log(a); // 輸出undefined
var a = 2;

(這個特性會迫使程序猿們養(yǎng)成先定義后使用的習慣, 同時避免var的 undefined 產(chǎn)生難以查找的錯誤)

  • let不允許重復聲明同一變量
{
var a;
let a;    // error
}

{
let a=1;
let a;  //error
}

const命令

  • const用來聲明一個只讀的常量, 一旦聲明,常量的值不可改變
    聲明時必須初始化,否則會報錯
const a = 1;
a = 5;  //TypeError: Assignment to constant variable.

const p;  //SyntaxError: Missing initializer in const declaration
  • const 只在聲明其所在的塊級作用域內(nèi)有效
  • const 命令聲明的常量也沒有變量提升,只能在聲明的位置后面使用
  • 同樣不可重復聲明同一變量
注意:

對于復合類型的變量,變量名不指向數(shù)據(jù),而是指向數(shù)據(jù)所在的地址。const命令只是保證變量名指向的地址不變,并不保證該地址的數(shù)據(jù)不變

const a = [];
a.push('Java'); // 可運行 此時a為['Java']
a = ['script'];    // error
塊級作用域的優(yōu)點
  1. 避免內(nèi)層變量覆蓋外層變量
  2. 避免用來計數(shù)的循環(huán)變量泄露為全局變量
  3. 引入了塊級作用域,允許在塊級作用域之中聲明函數(shù)


so

const 和 let 用起來

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容