ES6學習筆記--let和const命令

let命令

一、let用法相似var,用於聲明變量。可是所聲明的變量只在let命令所在的代碼塊內有效。spa

二、不存在變量提高,因此變量必定要在聲明後使用,不然報錯。對象

三、暫時性死區。只要塊級做用域內存在let命令,它所聲明的變量就「綁定」在這個區域,再也不受外部的影響。好比 :內存

var a = 1;作用域

if(true){io

a = 2; //報錯console

​let a;function

}​class

​上面的代碼中存在全局變量a,可是塊級做用域中let又聲明瞭一個局部變量a,致使後者綁定這個塊級做用域,因此在let聲明變量前,對a賦值會報錯。import

四、不容許重複聲明。let不容許在相同的做用域內聲明同一變量。變量

function​( ){

let a = 1;

var a =2;

}   //報錯​

const命令​

一、const用來聲明常量。一旦聲明其值不能改變。這就意味着const一旦聲明常量,就必須初始化,不能留到之後賦值。

二、與let命令相同,只在聲明所在的塊級做用域內有效。

三、const命令聲明的變量也不提高,一樣存在暫時性死區,只能在聲明後使用。一樣不可重複聲明變量。

四、對於複合類型的變量,變量名不指向數據,而是指向數據所在的地址。const命令只是指向的地址不變,並不保證改地址的數據不變,因此將一個地址聲明爲變量須要很是當心。

const foo = {};

foo.prop = 123;

foo= { }; ​// 報錯

上面的代碼,常量foo存儲的是一個地址,指向一個對象。不可變的只是這個地址,即不能把foo指向另外一個地址,但對象自己是可變的,因此依然能夠爲其添加屬性。若是想使對象不可變,能夠將對象凍結,使用object.freeze方法。

五、跨模塊常量的寫法。

//constants.js模塊

export const A = 1;

export const B = 2;

export const C = 3;

//text1.js模塊

import​ * as constants from './constants';

console.log(constants.A ); // 1​

console.log(constants.B ); // 2

//text2.js模塊

import​ {A, B} from './constants';

console.log(constants.A ); // 1​

console.log(constants.B ); // 2

 

ES5只有兩種聲明變量的方式:var命令和function命令。ES6爲其添加了let命令和const命令。後面還會​提到另外兩種聲明方法:import命令和class命令。因此ES6一共有六種聲明變量的方法。

相關文章
相關標籤/搜索