Javascript “防止错误”;是未定义的“;in-if语句
我的问题是如何更有效地防止“变量未定义”错误 e、 g 如果我使用以下代码: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
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(“跳过块”)}
有关详细信息,请阅读。特别是标题为短路评估