变量不用var定义,就被认为是全局变量。否则,必须在函数内用var 声名

解决方案 »

  1.   

    for (i=0;i<notNullCol.length;i++)
    这句代码里已经对 i 进行了一个初始赋值 i=0 ,所以循环体里是不会有错的。只不过这个 i 由于没有在函数体里定义,变成了页面级全局变量了。
    我们一般都会在for()循环语句里把 var 定义加上即 for (var i=0;i<notNullCol.length;i++)这样即可以保证这个变量 i 不会“外逃”而影响函数外的 i 而又赋了初始值。
      

  2.   

    在javascript中for循环中定义的变量就是函数级的作用域,不是仅出现在循环中,这个其他语言有所区别。例如
    for (var i=0;i<2;i++){}
    alert(i);
    会显示i的值为2。但lz的问题可能是其他的问题引起的,而不是是否需要定义i的问题,因为for(i=0...已经将i的值设为0了,即使全局变量也没有关系。比较诡异,再仔细看看呢。