2015-10-15 111 views
2

如果我在vb.net此行JavaScript中是否存在“OrElse”等效项?

If (a = Nothing OrElse a.value = Nothing) Then 
    DoSomething() 
End If 

这是

if (a = nothing) Then 
    DoSomething() 
else 
    if (a.value = nothing) Then 
     DoSomething() 
    End If 
End If 

相当于所以基本上是什么让“OrElse运算”,从不同的“或”是,右手边是唯一评估是否左手边应该返回false,在这种情况下,这是必要的,因为如果我检查a.value,而不是一个,那么我会得到一个空引用异常。

在JavaScript中是否有等价于OrElse运算符?

+0

是否可以使用其他if(a.value =无)? –

+0

这与JavaScript或运算符“||”有何不同? –

回答

5

这个工程。 (这就是所谓的短路)

if(!a || !a.value) { 
    doSomething() 
} 
+2

小心,如果a.value是数字0(字符串'0'没问题,那将是真的) –

+0

yes ....所有关于使用的常见警告!检查null/undefined ness适用:) –

1

在JavaScript中,||运算符是短路的,但|(它作为按位或运算符加倍)不是短路。

它在所有的C-语法语言,包括C#和Java一样,虽然给出a||b不是所有的语言保证之前b(他们可能会选择评估b第一)a进行评估。总是检查你的语言规范。

相关问题