es5中只有函數(shù)作用域和全局作用域,沒有塊級作用域,會出先問題:
1, 變量提升會導(dǎo)致內(nèi)層變量會覆蓋外層變量,
var i =? 5;
function new(){
console.log(i)
if(true)? {
var? i? =? 8;
}
}
new()//undefined
2,計數(shù)的循環(huán)為全局循環(huán)
ES6的塊級作用域
es6的塊級作用域允許任意嵌套。外部作用域無法讀到內(nèi)部作用域的變量。
let? i? =? 2;
{let? i? =? 4}
ES6中的塊級作用域,明確允許在塊級作用域中聲明變量。
ES6中,函數(shù)的聲明的行為為let,? 作用域外就不能引用。
ES6中函數(shù)聲明可以提到函數(shù)作用域的頭部。