Javascript / jQuery + length = problem

Javascript / jQuery + length = problem

本文关键字:problem length jQuery Javascript      更新时间:2023-09-26

我的脚本的一个小版本是:

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

我注意到(通过进行一些"警报"调试(,我的脚本在评估x.length时会停止。即使我试图在警报中打印它,脚本也会停止。

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

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

非常感谢你的想法!

尝试

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

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

在您的代码中,x为null,并且您正试图从null值中获取length属性,这将引发javascript错误。请检查您的控制台,您肯定会看到一个错误。

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

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

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

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

应该没事。

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

似乎解决了的问题

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

不能在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
}

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

x = {
      length : 0
    };

而不是

x = null;

编辑:脉冲星的答案更有意义!