防止错误"未定义" in if statement

时间:2016-03-28 12:33:24

标签: javascript arrays node.js undefined

我的问题是关于防止"变量未定义"错误更有效率。

e.g

如果我使用以下代码:

if (array[index] != undefined)
{
  if (array[index].id == 1)
  {
    // code 
  }
}

它会正常工作。但是,我能够使用

if (array[index] != undefined && array[index].id == 1)
{
 // code
}

未获得"变量未定义"错误,如果array未定义?

(我现在无法在我的代码中对此进行测试,因为我正在构建客户端 - 服务器应用程序,而且我必须更改许多行来尝试它,所以我&#39我在这里问。我很抱歉,如果不合适的话)

6 个答案:

答案 0 :(得分:3)

  仅当(&&a && ba的值都是真值时,

b才会返回true。

如果第一个操作数(expression)被评估为false,则根本不评估第二个操作数(expression),因为结果始终为false

答案 1 :(得分:2)

是使用typeof评估未定义变量的更好实践:

if ( typeof array[index] !== 'undefined' && array[index].id == 1)
{
   // code
}

请务必检查字符串' undefined' 而不是原始值。

MDN

中的更多信息

答案 2 :(得分:1)

不,如果数组未定义,则需要if语句,如下所示:

if (array && array[index] !== undefined && array[index].id === 1) {
   // do things
}

第一个条件,如果为false将停止对所有其他条件的评估。这将失败的唯一方法是,如果您以严格模式运行代码并且从未声明var array

答案 3 :(得分:1)

if只有在if的paranthesis中的所有条件都为真时才会返回true。

如果任何一个表达式被评估为false,则整个表达式将被计算为false。

答案 4 :(得分:1)

如果你必须检查数组本身是未定义的,那么你还必须在那里检查typeof数组。像这样:

if(typeof array !== 'undefined'){
    if ( typeof array[index] !== 'undefined' && array[index].id == 1)
    {
       // code
    }
}

答案 5 :(得分:0)

是的,如果第一个条件失败,它将短路并忽略其他条件,如任何语言。