我现在正在学习 javascript,发现这段代码有一些问题
var response = '{"status":{"message":{"-1":[111]}}}';
response = jQuery.parseJSON(response);
if ( typeof (response.status.warning[-1]) == "undefined" ) {
console.log(true);
};
为什么他会抛出错误,而不是仅仅忽略“console.log”部分?
我现在正在学习 javascript,发现这段代码有一些问题
var response = '{"status":{"message":{"-1":[111]}}}';
response = jQuery.parseJSON(response);
if ( typeof (response.status.warning[-1]) == "undefined" ) {
console.log(true);
};
为什么他会抛出错误,而不是仅仅忽略“console.log”部分?
您需要更有防御性地对此进行编码:
if (response && (!response.status || !response.status.warning || typeof (response.status.warning[-1]) == "undefined" ) {
检查是否存在response.status
并且response.status.warning
应该进行。如果response.status
甚至不存在,response.status.warning
将产生错误
因为它甚至无法通过这部分:
typeof (response.status.warning[-1]) == "undefined"
因为response.status.warning
是undefined
。这就是它抛出错误的原因。
response.status.warning
仅当您确定response
并且.status
不存在时才检查是否存在undefined
:
if(response.status.warning){
console.log("It exists!");
}