OOOjavascript:object self-reference返回undefined,但控制台显示它存在
OOO javascript: object self reference returns undefined but console shows it exists
好的,所以我在发布之前搜索了一下。。。运气不好(也许我只是个傻瓜)。
我有一个我称之为"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
),则会导致错误。
相关文章:
- Meteor js-控制台显示'未定义'即使返回结果
- 我的镀铬扩展程序没有't向控制台显示错误,但它显示日志
- 网络视图控制台显示安卓< 4.0 上的错误 |(JVectorMap)
- JavaScript输入不显示值,但控制台显示它有它
- 从控制台显示的数据属性值,但不使用脚本显示
- OOOjavascript:object self-reference返回undefined,但控制台显示它存在
- chrome控制台显示带有摘要身份验证的密码
- Chrome控制台显示未捕获类型错误:无法读取属性'启动'的未定义
- setTimeout不工作.控制台显示未定义latLng
- 控制台显示数组未定义
- 幻灯片停止工作控制台显示没有相关错误?但是这个无关
- 参数检查为空/未定义,尽管控制台显示值
- 无法用Jquery在Chrome控制台显示输出
- 自定义JavaScript异常不会在Google Chrome's控制台显示其消息
- 如何让chrome的控制台显示其动态更改的名称函数
- 检查文件是否存在,但防止在控制台显示404错误
- Chrome和ie的控制台显示'top'是'undefined',但是Safari和Fi
- 为什么控制台显示对象内容时,对象显示为未定义
- Javascript变量在IE中未定义,直到控制台显示
- 当我尝试使用ajax时,chrome的控制台显示“资源加载失败”