关于javascript:如何在jquery中检查null值而不会出现错误?

How can I check a value for null in jquery without getting an error?

本问题已经有最佳答案,请猛点这里访问。

我有这个代码:

1
if (returneddata.daterangeparams.TimeUnitsFrom != null) {

...当值确实为null时,会抛出此错误(如Chrome开发工具控制台中所示):

1
Index:1031 Uncaught TypeError: Cannot read property 'TimeUnitsFrom' of null

那么如何以一种可以避免错误的方式检查null呢?

根据这里的建议,我甚至试过这个:

1
if (returneddata.daterangeparams.TimeUnitsFrom != null && variable !== undefined) {

...但我仍然从浏览器的内容中得到同样的信息。

更广泛的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function populatedaterangeprams(rptval, returneddata) {
    var fromval = '';
    var toval = '';
    if (returneddata.daterangeparams.TimeUnitsFrom != null && returneddata.daterangeparams.TimeUnitsFrom !== undefined) {
        fromval = returneddata.daterangeparams.TimeUnitsFrom;
    }
    if (returneddata.daterangeparams.TimeUnitsTo != null && returneddata.daterangeparams.TimeUnitsTo !== undefined) {
        toval = returneddata.daterangeparams.TimeUnitsTo;
    }

    if (rptval === 1) {
        // Produce Usage
        $("#produsagefrom").val(fromval);
        $("#produsageto").val(toval);
    } else if (rptval === 2) {
    . . .

那么如何在javascript / jQuery中安全地检查null呢?

UPDATE

正如Phil Varg所说,我需要这样做:

1
2
3
4
5
6
7
8
if (returneddata != null && returneddata.daterangeparams != null && returneddata.daterangeparams.TimeUnitsFrom != null) {
    fromval = returneddata.daterangeparams.TimeUnitsFrom;
}
if (returneddata != null &&
        returneddata.daterangeparams != null &&
        returneddata.daterangeparams.TimeUnitsTo != null) {
    toval = returneddata.daterangeparams.TimeUnitsTo;
}

......但这似乎比大型强子对撞机上的有机硅和管道胶带工作更笨拙。 难道没有一种方法可以实现这一点,在这里检查返回的data.daterangeparams.TimeUnitsTo是否会首先检查前两个子粒子?


问题是returneddata.daterangeparams为空。 并且你在上面调用TimeUnitsFrom
所以你需要检查returndata不是null,returndata.daterangeparams不是null,returneddata.daterangeparams.TimeUnitsFrom不是null