2

好的,所以我在发布之前做了一些搜索......没有运气(或者我可能只是愚蠢)。

我有这个数组,我称之为“myArray”,我将对象推送到它上面以填充一些变量:

myArray.push({
    time        : (y.moveTime - y.startTime),
    pos         : y.move,
    last        : myArray[y.recents.length-1].time
});

我的问题是为什么萤火虫抱怨“last”变量:“ Uncaught TypeError: Cannot read property 'time' of undefined ”。如果我做

last        : myArray[y.recents.length-1]

一切安好。

我不明白的观察:当我有“.time”引用时,数组是空的,但如果我删除它,数组是满的。

我在这里想念什么?我不明白:(

感谢您的任何指示。

4

2 回答 2

4

该错误意味着评估值

myArray[y.recents.length-1]

不是具有time属性的对象。这可能在您执行第一个时发生,push因为数组还没有任何元素。

如果您想隐藏错误并在这种情况下将last属性分配给undefined,您可以添加一个备用值:

last: (myArray[y.recents.length - 1] || {}).time 
于 2012-04-04T00:02:14.993 回答
0

的值myArray[y.recents.length-1]可以是任何东西(一些字符串、对象、数组、null 等)。你可以用它设置值,last不会出错。

但是,如果将属性设置为非对象(如 setting time),则会导致错误。

于 2012-04-04T00:02:18.320 回答