我正在遍历一个内部属性不完全一致的大对象。但是,当我在对象周围抛出 if(typeof){}
语句时,它仍然会触发错误:
声明
if (typeof pendingTripDropoffMarkers[i].trip.id !== "undefined") {// do stuff}
错误
Uncaught TypeError: Cannot read property 'trip' of undefined
收获
但是,具有相同作用域的同一个函数中的姐妹对象就可以了。
if (typeof pendingTripPickupMarkers[i].trip.id !== "undefined") {// do stuff}
如果我在创建对象内容后对其进行打印,它们看起来就很好。那么是什么邪恶势力在这里插手呢?谢谢。
最佳答案
您应该测试任何可能 undefined object 。
if (pendingTripDropoffMarkers[i]
&& pendingTripDropoffMarkers[i].trip
&& pendingTripDropoffMarkers[i].trip.id !== undefined) {
如果您真的担心 undefined
被覆盖,请不要使用 typeof
hack。只需使用 void
运算符获取一个新的 undefined
。
if (pendingTripDropoffMarkers[i]
&& pendingTripDropoffMarkers[i].trip
&& pendingTripDropoffMarkers[i].trip.id !== void 0) {
如果您确定应该定义 pendingTripDropoffMarkers[i]
,那么某处还有其他问题。
关于javascript - 为什么一个简单的 JS 未定义检查会触发错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9027399/