ES6只有六種聲明變量的方法:php
var
命令和code
function
命令,blog
let
和內存
const
命令,作用域
import
命令和get
class
命令。因此,ES6一共有6種聲明變量的方法。it
const
聲明一個只讀的常量。一旦聲明,常量的值就不能改變。io
const
聲明的變量不得改變值,因此const一旦聲明變量,就必須當即初始化,不能留到之後賦值console
在ES6中let
命令,用來聲明變量。用法相似於function
var
,可是所聲明的變量,只在
let
命令所在的代碼塊內有效。
{ let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1
let不存在變量提高。
let
不像
var
那樣會發生「變量提高」現象。因此,變量必定要在聲明後使用,不然報錯。
console.log(test1); // 輸出undefined console.log(test2); // 報錯ReferenceError var test1= 2; let test2= 2;
暫時性死區。只要塊級做用域內存在
let
命令,它所聲明的變量就「綁定」(binding)這個區域,再也不受外部的影響。
var tmp = 123; if (true) { tmp = 'qq'; // ReferenceError 在 let
聲明變量前,對
tmp
賦值會報錯
let tmp;
}
ES6明確規定,若是區塊中存在 let
和
const
命令,這個區塊對這些命令聲明的變量,從一開始就造成了封閉做用域。凡是在聲明以前就使用這些變量,就會報錯。
if (true) { // TDZ開始 tmp = 'abc'; // ReferenceError console.log(tmp); // ReferenceError let tmp; // TDZ結束 console.log(tmp); // undefined tmp = 123; console.log(tmp); // 123 }
轉載於猿2048:➪《ES6筆記01-聲明變量》