我的脚本的一个小版本就是这样:
var x = null;
for(var i=0; i<x.length; i++)
{
//do stuff
}
我注意到(通过做一些'警报'调试)我的脚本在评估 x.length 时停止了。即使我尝试在警报中打印它,脚本也会停止。
我的想法是,某些时候我的x变量是一个数组,有时候是null。
当然,我是初学者,所以我可能做了些蠢事。我的Firefox 6错误控制台中没有出现错误。
非常感谢任何想法!
答案 0 :(得分:2)
尝试
var x = null;
for(var i = 0; x && i < x.length; i++) {
//do stuff
}
首先会检查x
是否不是null
。如果x
为null
,则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;
编辑:脉冲星的回答更有意义!