IE8 Javascript:'2'为null或不是对象

时间:2010-12-07 20:50:23

标签: javascript internet-explorer-8

我在IE8中收到一个无意义的错误消息,告诉我常量'2'为空或不是对象。代码行是:

if (! localtree[idx][2]) {

我也试过这样编码:

if (localtree[idx][2] == 0) {

该位置的数组中的值始终为零(暂时)。

IE8如何认为数字2为空?我很神秘!

确切的错误是:

Message: '2' is null or not an object

有没有人见过这个?

编辑:这是一个非常误导性的错误消息。请参阅下面的答案,了解实际出现的问题。

2 个答案:

答案 0 :(得分:5)

这是一个非常令人困惑的错误消息。事实证明,我正在跨越阵列的末尾踩一个元素。 'idx'引用了一个不存在的值,我试图将其视为数组引用(使用[2])。

不应该告诉我'2'为空,而应该说'localtree [idx]'为空。

这个的根本原因是我有一个尾随的逗号我定义了数组,导致数组中有一个额外的null值。在firefox中,尾随逗号被忽略(如在perl中),但在IE中,它们很重要。

答案 1 :(得分:2)

  

常量'2'为空或不是对象

if (! localtree[idx][2]) {

JavaScript没有常量,至少现在还没有。而且你没有检查一个数字,而是一个数组的成员,即:对象2的索引号为localtree[idx]的变量(其中idx必须包含一个字符串来引用一个object属性或引用数组的索引号。)