问题描述
我正在尝试从API的json中捕获某个键不存在的错误,在本例中为imageLinks.thumbnail。
这是我到目前为止编写的内容,但仍然出现TypeError:无法读取未定义的属性“缩略图”。
let cover;
if(results.imageLinks === undefined){
let cover = "http://actar.com/wp-content/uploads/2015/12/nocover.jpg";
} else {
let cover = results.imageLinks.thumbnail;
};
帮助将不胜感激。
干杯
1楼
您可以使用运算子
if('imageLinks' in results)
2楼
使用
(function() { let cover; const result = { imageLinks: {} }; if (!Object.hasOwnProperty.call(result, 'imageLinks')) { return; } if (Object.hasOwnProperty.call(result.imageLinks, 'thumbnail')) { cover = results.imageLinks.thumbnail; } else { cover = "http://actar.com/wp-content/uploads/2015/12/nocover.jpg"; } console.log(cover); })();
3楼
您的问题似乎有点模棱两可。
我将根据我对您的代码的了解尝试回答。
看来您有一个名为result的对象,该对象可能具有或不具有imageLinks属性。
因此,您需要检查“如果结果具有属性imageLinks,则将封面分配给results.imageLinks.thumbnail,否则,分配“ ”
let cover = results['imageLinks']['thumbnail'] ? results['imageLinks']['thumbnail'] : "http://actar.com/wp-content/uploads/2015/12/nocover.jpg";
请注意,我放置的支票比较全面。
仅当对象的结构为{'results' : 'imageLinks': {'thumbnail' : 'some value'}}
它才会通过
如果您只想检查'imageLinks',请将结果['imageLinks']['thumbnail']
替换为results['imageLinks']
在JS中,您希望检查对象中的键,您可以直接编写if(results['imageLinks'])
。