Javascript / jQuery + length = problem
Javascript / jQuery + length = problem
我的脚本的一个小版本是:
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
。如果x
是null
,则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;
编辑:脉冲星的答案更有意义!
相关文章:
- TypeError:在不兼容的接收器nodejs上调用了方法Uint8Array.length
- Array.length似乎不起作用;console.log则显示其他情况
- 为什么Float32Array.length的值总是3
- jQuery.length()速度含义
- JQuery `length`属性工作不正常.为什么?
- 可以't将.length属性与IronJS和ArrayObject一起使用
- javascript testing .length and .length > 0
- getElementsByTagName('img').length logs out to 0
- 为什么 .length 在此代码中总是返回 0
- jquery .length 不返回实际长度
- 有时 array.length 只在 .push() 之后工作(为什么?)
- 当Json Length过长时,对ASP.NET MVC Controller的Ajax调用返回404
- 是什么导致JS中出现这种带有.length的奇怪行为
- 在for循环中使用x.length时出现问题
- Javascript document.images.length returning 0
- 流星+聚合物-核心子菜单投掷'undefined不是对象(正在评估'this.items.length&
- 文本框's的length属性在JQuery中从不返回0
- Function.length和this.length不一样.为什么
- .length不处理$resource导致angularjs
- Javascript / jQuery + length = problem