使用var,它会减小变量的范围,否则变量将查找最接近的闭包以查找var语句。如果找不到,var则表示它是全局的(如果处于严格模式下using strict,则全局变量将引发错误)。这可能会导致如下问题。function f (){ for (i=0; i<5; i++);}var i = 2;f ();alert (i); //i == 5. i should be 2如果您var i在for循环中编写警报,则会显示2。
你真的应该声明局部变量用var,始终。您也不应使用“ for ... in”循环,除非您完全确定这就是您想要的。为了遍历实数组(这很常见),您应该始终使用带有数字索引的循环:for (var i = 0; i < array.length; ++i) { var element = array[i]; // ...}用“ for ... in”遍历普通数组可能会产生意想不到的结果,因为循环可能会拾取除数字索引数组之外的数组属性。编辑 -在2015年这里可以使用.forEach()遍历数组的方法:array.forEach(function(arrayElement, index, array) { // first parameter is an element of the array // second parameter is the index of the element in the array // third parameter is the array itself ...});.forEach()从IE9开始,该方法存在于Array原型中。