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

IE8 Javascript:';2';是否为null或不是对象,javascript,internet-explorer-8,Javascript,Internet Explorer 8,我在IE8中收到一条毫无意义的错误消息,告诉我常量“2”为null或不是对象。代码行是: if (! localtree[idx][2]) { 我也试着这样编码: if (localtree[idx][2] == 0) { 该位置的数组中的值始终为零(目前) IE8怎么能认为数字2是空的?我很迷惑 确切的错误是: Message: '2' is null or not an object 有人见过这个吗 编辑:这是一条误导性很强的错误消息。看看下面我的答案,看看到底哪里出了问题 常量“2”

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

if (! localtree[idx][2]) {
我也试着这样编码:

if (localtree[idx][2] == 0) {
该位置的数组中的值始终为零(目前)

IE8怎么能认为数字2是空的?我很迷惑

确切的错误是:

Message: '2' is null or not an object
有人见过这个吗

编辑:这是一条误导性很强的错误消息。看看下面我的答案,看看到底哪里出了问题

常量“2”为null或不是对象

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

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

这是一条非常混乱的错误消息。结果是,我将一个元素步进到数组末尾之外。”idx'引用了一个不存在的值,我试图将其作为数组引用(使用[2])

与其告诉我“2”是空的,不如说“localtree[idx]”是空的


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

如何初始化localtree?firefox对此给出了什么错误?是的,但错误消息明确指出“2”是问题所在。另外,“2”是一个常数。啊,经典的尾随逗号问题。不,
localtree[idx]
不是
null
,因为
localtree[idx][0]
..[1]
确实存在(对象本身总是计算为
true
),但
..[2]
是。也就是说,我同意错误信息可能更清晰。顺便说一句,当您向它提供一个带有尾随逗号的数组时,将显示一条警告消息。