Javascript / jQuery + length =问题

时间:2011-08-26 10:09:28

标签: javascript jquery null

我的脚本的一个小版本就是这样:

var x = null;
for(var i=0; i<x.length; i++)
{
    //do stuff
}

我注意到(通过做一些'警报'调试)我的脚本在评估 x.length 时停止了。即使我尝试在警报中打印它,脚本也会停止。

我的想法是,某些时候我的x变量是一个数组,有时候是null。

当然,我是初学者,所以我可能做了些蠢事。我的Firefox 6错误控制台中没有出现错误。

非常感谢任何想法!

7 个答案:

答案 0 :(得分:2)

尝试

var x = null;
for(var i = 0; x && i < x.length; i++) {
    //do stuff
}

首先会检查x是否不是null。如果xnull,则for将无法运行。如果不是null,则for将照常运行。

答案 1 :(得分:2)

在您的代码中x为空,并且您尝试从length值获取null属性,这将导致javascript错误。请检查您的控制台,您肯定会看到错误。

在这种情况下,您应始终确保在访问对象或变量的任何属性之前进行空检查。试试这个

var x = null;
if(x){
   for(var i=0; i<x.length; i++)
   {
      //do stuff
   }
}

答案 2 :(得分:1)

那是因为它是空的。添加此if语句

if (x !== null){
    for(var i=0; i<x.length; i++)
    {
        //do stuff
    }
}

它应该没问题。

答案 3 :(得分:1)

var x = null;

if(x !== null){
    for(var i=0; i<x.length; i++)
    {

        //do stuff
    }
}

似乎可以解决问题

答案 4 :(得分:1)

为什么不用x初始化var x = [];?通过这种方式,您可以确保它始终是一个数组,但如果它是空的,那么循环就不会做任何事情。

答案 5 :(得分:0)

您无法在null对象上调用方法长度。 所以你需要在调用之前测试对象是否为null。

var x = null;
if(x != null)
{
  for(var i=0; x!= null && i < x.length; i++)
  {
     //do stuff
  }
}

var x = null;
for(var i=0;x!= null && i<x.length; i++)
{
   //do stuff
}

答案 6 :(得分:0)

这里的另一个选择是将x初始化为具有length属性的对象 -

x = {
      length : 0
    };

而不是

x = null;
编辑:脉冲星的回答更有意义!