let命令
ES6新增了let命令姿搜,用來聲明變量寡润,類似于var,但是所聲明的變量舅柜,只在let命所在的代碼塊內(nèi)有效梭纹。
for循環(huán)的計數(shù)器,就很適合使用let致份。
let命令不存在變量提升变抽,它所聲明的變量,一定要在聲明后才能使用,否則會報錯绍载。var可以變量提升太伊。
let不允許在相同作用域內(nèi),重復(fù)聲明同一個變量(一樣的變量名)逛钻。
const命令
const聲明一個只讀的常量僚焦,一旦聲明,常量的值就不能改變曙痘。
const聲明的變量不得改變值芳悲,這意味著,const一旦聲明變量边坤,就必須立即初始化名扛,不能留到以后賦值。
const的作用域和let相同:只在聲明的塊級作用域內(nèi)有效茧痒。
const聲明的常量也是不提升肮韧,同樣存在暫時性死區(qū),只能在聲明的位置后邊使用旺订。
和let一樣不可重復(fù)聲明弄企。
const保證的,并不是變量的值不可以改變区拳,而是變量指向的那個內(nèi)存地址所保存的數(shù)據(jù)不得改動拘领。
對于簡單類型的數(shù)據(jù),如數(shù)值樱调、字符串约素、布爾值,值就保存在變量指向的那個內(nèi)存地址笆凌,因此等同于常量圣猎。
但是對于復(fù)合類型的數(shù)據(jù)(主要指對象和數(shù)組),變量指向的內(nèi)存地址乞而,保存的只是一個指向?qū)嶋H數(shù)據(jù)的指針送悔,const只能保證這個指針是固定的,至于它所指向的數(shù)據(jù)結(jié)構(gòu)是不是可變的晦闰,就完全不能控制了放祟。
ES6聲明變量的6種方法:
var
function
let
const
import
class