我正在尝试从API的json中捕获某个键不存在的错误,在本例中为imageLinks.thumbnail。
这是我到目前为止所写的内容,但仍然出现TypeError:无法读取未定义的属性'thumbnail'。
let cover;
if(results.imageLinks === undefined){
let cover = "http://actar.com/wp-content/uploads/2015/12/nocover.jpg";
} else {
let cover = results.imageLinks.thumbnail;
};
我们将不胜感激。
欢呼
答案 0 :(得分:0)
您可以使用IN运算符
if('imageLinks' in results)
答案 1 :(得分:0)
(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);
})();
答案 2 :(得分:0)
您的问题似乎有点模棱两可。
我将根据您对代码的了解尝试回答。
看来您有一个名为results的对象,该对象可能具有或不具有imageLinks属性。
因此,您需要检查“如果结果具有属性imageLinks,则将封面分配给results.imageLinks.thumbnail,否则,分配“ http://actar.com/wp-content/uploads/2015/12/nocover.jpg”
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'])
。