一、let
1、變量沒有提前聲明,沒有預解釋
2、不能重複定義
3、雖然不進行預解釋,但是代碼執行上來也是先将定義的變量提前過濾一遍,一旦發現不合法,就直接報錯了,代碼也不會執行。
二、塊級作用域
{ }是一個私有作用域,塊級作用域
let oLis=document.getElementsByTagName('li');
for(var i=0;i<oLis.length;i++){
oLis[i].onclick=function () {
console.log(i); //永遠輸出4
}
}
for(let i=0;i<oLis.length;i++){
oLis[i].onclick=function () {
console.log(i); //相應輸出數,生成私有作用域,變量就是私有變量
}
}
let a=0;
function fn() {
console.log(a);//目前作用域沒有,也是會往上查找的
}
fn();
三、const
1、定義靜态變量,不能修改,必須要指派
2、不可重複聲明(不管是動态變量,還是靜态變量,都不可以重複定義)