在没有es6之前,js只有全局作用域和函数作用域,其中作用域内的变量和函数都存在提升问题。
a.函数内层的变量会冲掉该外层的变量
(function () {
var str = "ynqc";
function test() {
console.log(str); //undefined
if (false) {
var str = "test";
}
}
return test();
})();
b.用来计数的循环变量泄漏为全局变量
var s = 'ynqc';
for (var i = 0; i < s.length; i++) {
}
console.log(i); // 4
c. 块级作用域,块与块之间变量是相互独立的,互不影响