JavaScript undefined会抛出TypeError

时间:2013-03-06 08:00:11

标签: javascript undefined

我现在正在学习javascript并发现此代码存在一些问题

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

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

dafuq is this javascript

2 个答案:

答案 0 :(得分:2)

你需要更加防守地编码:

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

应该检查是否存在response.statusresponse.status.warning。如果response.status甚至不存在,response.status.warning将生成错误

答案 1 :(得分:1)

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

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

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


仅在您确定response.status.warningresponse不是.status时才检查undefined是否存在:

if(response.status.warning){
    console.log("It exists!");
}