Javascript “防止错误”;是未定义的“;in-if语句

Javascript “防止错误”;是未定义的“;in-if语句,javascript,arrays,node.js,undefined,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未定义,则在未获得“variable is undef

我的问题是如何更有效地防止“变量未定义”错误

e、 g

如果我使用以下代码:

if (array[index] != undefined)
{
  if (array[index].id == 1)
  {
    // code 
  }
}
它会很好用的。但是,我能用吗

if (array[index] != undefined && array[index].id == 1)
{
 // code
}
如果
array
未定义,则在未获得“variable is undefined”错误的情况下


(我现在无法在我的代码中准确地测试这一点,因为我正在构建一个客户机-服务器应用程序,我必须修改许多行来尝试它,所以我在这里询问。如果不合适,我很抱歉)

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

&
仅当(
a&&b
a
b
的值都是真实值时才会返回true


如果第一个操作数(
expression
)的计算结果为
false
,则根本不计算第二个操作数(
expression
),因为结果总是
false

使用typeof来计算未定义的变量是更好的做法:

if ( typeof array[index] !== 'undefined' && array[index].id == 1)
{
   // code
}
记得检查字符串“未定义”而不是原语值


更多信息请参见

否,如果数组未定义,则需要类似以下内容的if语句:

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

第一个条件,如果为false,将停止对所有其他条件的计算。这将失败的唯一方法是,如果您在严格模式下运行代码,并且从未声明过
var数组

只有当
if
中的所有条件都为true时,
if
才会返回true


如果任何一个表达式的计算结果为false,则整个表达式的计算结果为false。

如果必须检查数组本身是否未定义,则还必须检查数组的类型。大概是这样的:

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

大多数(所有?)浏览器都有一个控制台,您可以使用它来运行javascript并在页面上进行测试(只需按F12并单击console)。如果需要测试想法,也可以使用或。对于这种情况,您可以定义一个新变量,运行它,然后看看会发生什么。例如<代码>var tmp=[];if(tmp[0]!=undefined&&tmp[0].id==1){alert(“In if!”)}else{alert(“跳过块”)}
有关详细信息,请阅读。特别是标题为
短路评估