本文在 程序块作用域 中可见for循环里的变量i会影响全局,那么有什么办法解决这个问题呢?
在ES6中提出了 let 的概念,使用 let 声明的变量将具有 作用域 的限制,如:
for(let i =0; i <10; i++){
}
return i;
此时返回的就不是for循环中的i变量
需要注意的是这是可以 向下兼容 的,比如
{
let i =0;
{
alert(i); //能获取i变量
}
}
return i;
此时虽然外部的return无法获取i变量,但是二级作用域的alert却可以获得上一级的i变量,也就是所谓的
上级作用域向下兼容