捕获未定义的 JavaScript 变量

Catching undefined javascript variable

本文关键字:JavaScript 变量 未定义      更新时间:2023-09-26

我正在使用Ajax/jsonp访问远程数据库。 因此,永远不会返回响应错误。 当远程服务器由于任何原因不返回数据时,我正在尝试捕获实例。 我已经尝试了我能想到的一切来捕捉一个不确定的条件,但我似乎无法捕捉到它。 我试图用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")

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

如果未定义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
    }
}

似乎有效

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

这能行吗?

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