2015-10-15 4 views
2

Если у меня есть эта линия в vb.netЕсть ли эквивалент «OrElse» в javascript?

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» отличается от «Или» является то, что правая рука только вычисляется, если левая рука должны возвращать ложь, в этом случае необходимо, потому что если бы я, чтобы проверить a.value в то время как это ичто то я бы получить нулевое эталонное исключение.

Есть ли эквивалент оператору OrElse в javascript?

+0

Допустимо ли вам использовать другое, если (a.value = nothing) ?? –

+0

Как это отличается от JavaScript-оператора '' '? –

ответ

5

это работает. (это называется короткое замыкание)

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

осторожно, это было бы верно, если a.value - это число 0 (строка '0' в порядке) –

+0

да .... все обычные предупреждения об использовании! для проверки null/undefined ness применяется :) –

1

В JavaScript оператор || имеет короткое замыкание, но | (который удваивается как побитовый оператор OR) не является короткозамкнутым.

Это же на всех языках C-синтаксис, включая C# и Java, хотя, учитывая a||b не все языки гарантировать, что a будут оценены до b (они могут выбрать, чтобы оценить b первый). Всегда проверяйте свой язык.

Смежные вопросы