我的问题是关于防止"变量未定义"错误更有效率。
e.g
如果我使用以下代码:
if (array[index] != undefined)
{
if (array[index].id == 1)
{
// code
}
}
它会正常工作。但是,我能够使用
if (array[index] != undefined && array[index].id == 1)
{
// code
}
未获得"变量未定义"错误,如果array
未定义?
(我现在无法在我的代码中对此进行测试,因为我正在构建客户端 - 服务器应用程序,而且我必须更改许多行来尝试它,所以我&#39我在这里问。我很抱歉,如果不合适的话)
答案 0 :(得分:3)
仅当(&&
)a && b
和a
的值都是真值时,
b
才会返回true。
如果第一个操作数(expression
)被评估为false
,则根本不评估第二个操作数(expression
),因为结果始终为false
答案 1 :(得分:2)
是使用typeof评估未定义变量的更好实践:
if ( typeof array[index] !== 'undefined' && array[index].id == 1)
{
// code
}
请务必检查字符串' undefined' 而不是原始值。
中的更多信息答案 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)
是的,如果第一个条件失败,它将短路并忽略其他条件,如任何语言。