在java.C++等语言中,变量i在会在for循环的语句块中定义,循环一旦结束,变量i就会被销毁.可是在javaScript中,从定义开始,就可以在函数内部随处访问.比如 function output(){ for(var i=0; i<10; i++){ } alert(i); var i; //重新声明 alert(i); } javaScript会对后续i的声明视而不见,如果后续声明中有变量初始化还是会执行.可以使用匿名函数来模仿块级作用域,或者使用ES6的let命令. 用块级作用域的匿…