捕获未定义的javascript变量

时间:2013-09-10 15:18:04

标签: javascript undefined

我正在使用Ajax / jsonp来访问远程数据库。因此,永远不会返回response.error。当远程服务器因任何原因没有返回数据时,我正试图捕获一个实例。我已经尝试了一切我能想到的东西来捕捉一个未定义的条件,我似乎无法抓住它。我试图用Firebug找到变量。我已经尝试使用以下代码的每个组合,我能想到的,似乎无法让它工作。

                      if ( typeof(data.flightStatuses[0].operationalTimes.publishedDeparture.dateLocal) === "undefined") {
                        alert("flightstats is undefined");
                    }

任何想法都非常感谢!!!!

我也尝试过:

                      if ( typeof data.flightStatuses === "undefined") {
                        alert("flightstats is undefined");
                    }

上面的代码也不会执行警告......

最后!这工作......

if ( typeof data.flightStatuses[0] === "undefined")

我真的不知道为什么,但确实如此。谢谢大家的帮助!

3 个答案:

答案 0 :(得分:2)

如果data.flightStatuses未定义,则data.flightStatuses[0]将引发错误。让您只检查相关标识符是否未定义:

if(typeof data.flightStatuses === "undefined") {
    alert("flightStatuses is undefined");
} else {
    // Here you know data.flightStatuses exists, so you can test data.flightStatuses[0]
    if(typeof data.flightStatuses[0] === 'undefined'){
        alert("flightStatuses[0] is undefined");
    } else {
        // And so on, depending on how much you know about your data source
    }
}

答案 1 :(得分:2)

这似乎有效

   try {
        dateLocal = typeof (data.flightStatuses[0].operationalTimes.publishedDeparture.dateLocal) !== 'undefined' ? true : false;
        if (dateLocal) {
            // Do something with dateLocal
            // ...
        }
    }
    catch (err) {
        alert("flightstats is undefined: " + err);
    }

答案 2 :(得分:0)

这可行吗?

if (data.flightStatuses[0].operationalTimes.publishedDeparture.dateLocal) === null) {
                        alert("flightstats is undefined");
                    }