当检查未定义的值时,由于值未定义,我不断收到错误消息。如何正确检查未定义的值?

时间:2018-07-31 20:17:24

标签: javascript

代码如下:

if(typeof state.getId().stateId !== "undefined") {
   console.log("Not undefined");
} else { 
   console.log("Undefined");
}

我不断收到此错误: TypeError:无法读取stateId属性

我在做什么错?

问题是state.getId()本身未定义;并因此获得state.getId()的stateId属性成为问题。这与另一个问题不同,因为a)尚不立即了解.getId()。stateId是undefined的属性。

3 个答案:

答案 0 :(得分:0)

尝试

JobInfo jobInfo = new JobInfo.Builder(1, componentName)
                .setPersisted(true)
                .setBackoffCriteria(6000, JobInfo.BACKOFF_POLICY_LINEAR)
                .setMinimumLatency(1000 * 60)
                .build();

如果未定义状态或从调用getId返回的值,则将出现错误。短路或测试会抓住它,并阻止您尝试访问未定义的属性,这是导致您出错的原因。

答案 1 :(得分:0)

首先检查state.getId()是否为truthy,然后检查其财产

   if (state.getId() && state.getId().stateId !== "undefined") { 
         console.log("Not undefined");
   } else {
         console.log("Undefined");
   }

答案 2 :(得分:0)

检查是否存在state,然后检查state.getId是一个函数:

if (typeof state == "object" &&
    typeof state.getId == "function" ) {
   var id = state.getId();
   console.log("stateId=",id.stateId);
} else { 
   console.log("Undefined");
}

有关更多信息,请参见