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