好的,所以我在发布之前做了一些搜索......没有运气(或者我可能只是愚蠢)。
我有这个数组我叫“myArray”,我把对象推到它上面来填充一些变量:
myArray.push({
time : (y.moveTime - y.startTime),
pos : y.move,
last : myArray[y.recents.length-1].time
});
我的问题是为什么firebug会抱怨“last”变量:“ Uncaught TypeError:无法读取未定义的属性'时间'”。如果我做
last : myArray[y.recents.length-1]
一切都很好。
我不明白的观察: 引用时,数组为空,但如果删除它,则数组已满。
我在这里缺少什么?我不明白:(
感谢您的任何指示。
答案 0 :(得分:4)
错误表示评估值为
myArray[y.recents.length-1]
不是具有time
属性的对象。当您执行第一个push
时可能会发生这种情况,因为该数组还没有任何元素。
如果您想隐藏错误并在这种情况下只将last
属性分配给undefined
,则只需添加一个后备值:
last: (myArray[y.recents.length - 1] || {}).time
答案 1 :(得分:0)
myArray[y.recents.length-1]
的值可以是任何值(某些字符串,对象,数组,null等)。您可以使用它设置last
的值,不会出现任何错误。
但是,如果将属性设置为非对象(如设置time
),则会导致错误。