for (i=0;i<notNullCol.length;i++) 这句代码里已经对 i 进行了一个初始赋值 i=0 ,所以循环体里是不会有错的。只不过这个 i 由于没有在函数体里定义,变成了页面级全局变量了。 我们一般都会在for()循环语句里把 var 定义加上即 for (var i=0;i<notNullCol.length;i++)这样即可以保证这个变量 i 不会“外逃”而影响函数外的 i 而又赋了初始值。
在javascript中for循环中定义的变量就是函数级的作用域,不是仅出现在循环中,这个其他语言有所区别。例如 for (var i=0;i<2;i++){} alert(i); 会显示i的值为2。但lz的问题可能是其他的问题引起的,而不是是否需要定义i的问题,因为for(i=0...已经将i的值设为0了,即使全局变量也没有关系。比较诡异,再仔细看看呢。
这句代码里已经对 i 进行了一个初始赋值 i=0 ,所以循环体里是不会有错的。只不过这个 i 由于没有在函数体里定义,变成了页面级全局变量了。
我们一般都会在for()循环语句里把 var 定义加上即 for (var i=0;i<notNullCol.length;i++)这样即可以保证这个变量 i 不会“外逃”而影响函数外的 i 而又赋了初始值。
for (var i=0;i<2;i++){}
alert(i);
会显示i的值为2。但lz的问题可能是其他的问题引起的,而不是是否需要定义i的问题,因为for(i=0...已经将i的值设为0了,即使全局变量也没有关系。比较诡异,再仔细看看呢。