我在IE8中收到一个无意义的错误消息,告诉我常量'2'为空或不是对象。代码行是:
if (! localtree[idx][2]) {
我也试过这样编码:
if (localtree[idx][2] == 0) {
该位置的数组中的值始终为零(暂时)。
IE8如何认为数字2为空?我很神秘!
确切的错误是:
Message: '2' is null or not an object
有没有人见过这个?
编辑:这是一个非常误导性的错误消息。请参阅下面的答案,了解实际出现的问题。
答案 0 :(得分:5)
这是一个非常令人困惑的错误消息。事实证明,我正在跨越阵列的末尾踩一个元素。 'idx'引用了一个不存在的值,我试图将其视为数组引用(使用[2])。
不应该告诉我'2'为空,而应该说'localtree [idx]'为空。
这个的根本原因是我有一个尾随的逗号我定义了数组,导致数组中有一个额外的null值。在firefox中,尾随逗号被忽略(如在perl中),但在IE中,它们很重要。
答案 1 :(得分:2)
常量'2'为空或不是对象
if (! localtree[idx][2]) {
JavaScript没有常量,至少现在还没有。而且你没有检查一个数字,而是一个数组的成员,即:对象2
的索引号为localtree[idx]
的变量(其中idx
必须包含一个字符串来引用一个object属性或引用数组的索引号。)