es6 为什么引进块级作用域

在没有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. 块级作用域,块与块之间变量是相互独立的,互不影响

猜你喜欢

转载自blog.csdn.net/qq_33495944/article/details/83996142