Javascript:如何处理未定义的参数

时间:2016-06-13 14:45:36

标签: javascript node.js twitter

我使用twitter api获取有关推文的信息。我的代码正在使用此信息。有时它会发生,api会提供一个未完成的'我的代码停了。

我的想法是检查参数,只适用于那些没事的人:

if ( typeof data.id_str.user.name === 'undefined' || data.id_str.user.name === null ){ 
  next(); 
} else{
    return data.id_str.user.name;
}

但我的检查并不重要。如果我执行代码,有时会发生TypeError:"无法读取属性' name'未定义"。你知道我能做些什么来处理这个错误并检查下一条推文吗?

数据未定义。但我不知道何时无法定义数据。我需要一种跳过数据并使用下一个定义数据的方法。

我已经实施了您的建议。现在,if条件的else部分出现错误。为什么?它怎么会起作用?

if ( typeof data && data.id_str && data.id_str.user && data.id_str.user.name === 'undefined' || data && data.id_str && data.id_str.user && data.id_str.user.name === null ){
              console.log('data.id_str.user.name is undefined. --> Why?');              
            } else {
              console.log('on User  : '+data.id_str.user.name);
              }

2 个答案:

答案 0 :(得分:3)

在这种情况下,任何data链都可能未定义,例如data.id_str可能未定义,或data.id_str.user可能未定义。后一种情况将导致:

  

无法读取未定义的属性“名称”

有多种方法可以解决此问题,例如检查链data && data.id_str && data.id_str.user中的每个单独部分或将检索包装在try / catch中。

答案 1 :(得分:1)

你可以使用'守卫'。喜欢:typeof data && data.id_str && data.id_str.user && data.id_str.user.name === "undefined" 简单的解决方案,但有助于不锁定代码。

编辑:在这里,我发现你更多地描述了这种防范未定义的例子:Guarding against undefined parameters