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


let命令

1、let用法類似var,用於聲明變量。但是所聲明的變量只在let命令所在的代碼塊內有效。

2、不存在變量提升,所以變量一定要在聲明后使用,否則報錯。

3、暫時性死區。只要塊級作用域內存在let命令,它所聲明的變量就“綁定”在這個區域,不再受外部的影響。比如 :

var a = 1;

if(true){

a = 2; //報錯

​let a;

}​

​上面的代碼中存在全局變量a,但是塊級作用域中let又聲明了一個局部變量a,導致后者綁定這個塊級作用域,所以在let聲明變量前,對a賦值會報錯。

4、不允許重復聲明。let不允許在相同的作用域內聲明同一變量。

function​( ){

let a = 1;

var a =2;

}   //報錯​

const命令​

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

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

3、const命令聲明的變量也不提升,同樣存在暫時性死區,只能在聲明后使用。同樣不可重復聲明變量。

4、對於復合類型的變量,變量名不指向數據,而是指向數據所在的地址。const命令只是指向的地址不變,並不保證改地址的數據不變,所以將一個地址聲明為變量需要非常小心。

const foo = {};

foo.prop = 123;

foo= { }; ​// 報錯

上面的代碼,常量foo存儲的是一個地址,指向一個對象。不可變的只是這個地址,即不能把foo指向另一個地址,但對象本身是可變的,所以依然可以為其添加屬性。如果想使對象不可變,可以將對象凍結,使用object.freeze方法。

5、跨模塊常量的寫法。

//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一共有六種聲明變量的方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM