OOOjavascript:object self-reference返回undefined,但控制台显示它存在

OOO javascript: object self reference returns undefined but console shows it exists

本文关键字:控制台 显示 存在 undefined object self-reference 返回 OOOjavascript      更新时间:2023-09-26

好的,所以我在发布之前搜索了一下。。。运气不好(也许我只是个傻瓜)。

我有一个我称之为"myArray"的数组,我把对象推到上面来填充一些变量:

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

我的问题是,为什么firebug抱怨"最后一个"变量:"未捕获类型错误:无法读取未定义的属性'time'"。如果我做

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

一切都很好。

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

我在这里缺少什么我不明白:(

谢谢你的指点。

错误意味着的评估值

myArray[y.recents.length-1]

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

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

last: (myArray[y.recents.length - 1] || {}).time 

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

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