在JavaScript中使用typeof仍然会导致未定义对象的错误
Using typeof in JavaScript still causes error for undefined object
嗨,我正在查询亚马逊API,每隔一段时间一个项目没有图像。我试图解释这一点,但我仍然得到错误:TypeError:无法读取属性'0'的未定义
if (typeof result.ItemSearchResponse.Items[0].Item[i].SmallImage[0].URL[0] !== undefined) {
//items['image'][i] = result.ItemSearchResponse.Items[0].Item[i].LargeImage[0].URL[0];
console.log(result.ItemSearchResponse.Items[0].Item[i].SmallImage[0].URL[0]);
}
如果我注释掉If语句错误消失-有没有更好的方法来使用typeof -这将解释对象属性不存在吗?或者谁能给点建议如何解决?
谢谢
typeof
总是返回一个字符串,所以它是
if ( typeof something_to_check !== 'undefined' )
如果您检查实际的undefined
,则失败,如undefined !== "undefined"
至于错误,这意味着您正在尝试访问未定义的东西的第一个索引([0]
)
result.ItemSearchResponse.Items
或
result.ItemSearchResponse.Items[0].Item
或
result.ItemSearchResponse.Items[0].Item[i].SmallImage
或
result.ItemSearchResponse.Items[0].Item[i].SmallImage[0].URL
你必须检查每一个,如果你不知道哪一个不合格
if ( result.ItemSearchResponse.Items &&
result.ItemSearchResponse.Items[0].Item &&
result.ItemSearchResponse.Items[0].Item[i].SmallImage &&
result.ItemSearchResponse.Items[0].Item[i].SmallImage[0].URL
) {
// use
var img = result.ItemSearchResponse.Items[0].Item[i].SmallImage[0].URL[0]
}
如果索引可能是错误的,或者不是一个数组等,你必须检查,以及
为什么不使用
var arr = results.ItemSearchResponse.Items[0].Item[i].SmallImage || false;
if(arr[0]){
// do some work
}
如果任何包含数组不存在或SmallImage
中没有图像,则条件失败。
相关文章:
- 在setInterval函数之前声明时未定义对象
- 使用+=运算符未定义对象中的第一个元素
- 通过 Requirejs 传递的未定义对象
- JS:防止访问未定义对象的属性时出错
- AngularJs为什么在ng禁用函数上未定义对象
- IE上未定义对象值
- JQuery函数返回一个对象,但它被集成为未定义对象
- AJAX响应带有未定义/对象文档
- 处理未定义对象的内联比三进制更聪明
- JavaScript错误未定义对象,尽管对象存在
- Javascript未定义对象
- 未定义对象子属性的Javascript类型
- Javascript多维数组未定义对象错误
- 在一条语句中获取多个未定义对象中的初始化对象
- Javascript -对象中的未定义对象
- 是否可以像扩展其他对象一样扩展未定义对象
- Java Script Ionic框架中的未定义对象
- if else子句中未定义对象的未定义属性
- 未定义对象方法
- 在JavaScript中使用typeof仍然会导致未定义对象的错误