0

我现在正在学习 javascript,发现这段代码有一些问题

var response = '{"status":{"message":{"-1":[111]}}}';
response = jQuery.parseJSON(response);
if ( typeof (response.status.warning[-1]) == "undefined" ) {
    console.log(true);
};

为什么他会抛出错误,而不是仅仅忽略“console.log”部分?

dafuq 是这个 javascript

4

2 回答 2

2

您需要更有防御性地对此进行编码:

if (response && (!response.status || !response.status.warning || typeof (response.status.warning[-1]) == "undefined" ) {

检查是否存在response.status并且response.status.warning应该进行。如果response.status甚至不存在,response.status.warning将产生错误

于 2013-03-06T08:04:43.507 回答
1

因为它甚至无法通过这部分:

typeof (response.status.warning[-1]) == "undefined" 

因为response.status.warningundefined。这就是它抛出错误的原因。


response.status.warning仅当您确定response并且.status不存在时才检查是否存在undefined

if(response.status.warning){
    console.log("It exists!");
}
于 2013-03-06T08:02:18.657 回答