所謂溫故而知新脑题,一些知識還是值得拿出來鞏固的
let 和const其用法和var 類似,但是所聲明的變量只在let或const所在的代碼塊內(nèi)有效
{
let a=10
var b=1
}
a//a is not defined
b//1
暫時(shí)性死區(qū)
只要塊級作用域內(nèi)存在let命令芯杀,它所聲明的變量就綁定這個(gè)區(qū)域,不再受外部影響
并且沒有變量提升
var tmp=123;
if(true){
tmp='abc'
let tmp;
}
這樣會(huì)報(bào)錯(cuò)卓舵,由于let tmp已經(jīng)和這個(gè)塊級作用域綁定 tmp在let之前使用 會(huì)報(bào)錯(cuò)
let和const都不允許重復(fù)聲明弊仪,但內(nèi)層作用域可以定義外層作用域的同名變量
這里要注意
關(guān)于const
對于const指向符合類型的變量,變量名不指向數(shù)據(jù)洲脂,而是指向數(shù)據(jù)所在地址;
const a=[];
a.push("hello")
a=['hello']
以上代碼會(huì)報(bào)錯(cuò)斤儿,原因是把a(bǔ)又重新指向了一個(gè)新地址
以上例子部分來自阮一峰的ES6入門