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