2015-09-22 5 views
0

Я понимаю, что || b возвращает объект, а не логическое значение. Я просто не могу понять, почему javascript дает разные результаты дляjavascript || оператор дает разные результаты по заказу

undefined || "" (result is "") 
"" || undefined (result is undefined) 

, который, как я думаю, должен возвратиться "". Может кто-нибудь объяснить это мне? Благодаря!

Обновление: на него четко ответил @Quentin, «" оценивается как false, а || b возвращает b, если оба a и b оцениваются как false.

+2

Что вы точно проверяете? Можете ли вы предоставить фрагмент кода с чуть более контекстом? – depperm

+1

FYI: JavaScript '' 'оператор не возвращает вам логическое значение. Вероятно, поэтому вы в замешательстве. –

+0

Вы правы, я был в замешательстве от него :) Хороший улов! – AlliceSmash

ответ

5

Оператор || проверяет правдивость левой части выражения. Если LHS является истинным значением, тогда он возвращает LHS, иначе он возвращает RHS.

Вы можете увидеть, как это сочетается с if для практического примера:

if (a || b) 
  • Если a верно, то это то же самое, как if (a), который if (true).
  • Если a ложно и b верно, то if (b) является if (true)
  • Если a и b являются ложными, то if (b) что if (false)

Если ваш пример, ни "", ни undefined истинны значения, поэтому оба ваших теста вернут RHS.

3

Оператор логического ИЛИ оператора JavaScript, ||, returns one of its operands. В a || b он возвращает a, если a правдиво, а b в противном случае.

Оба ваших аргумента оценивают как false. Так в undefined || "" он возвращает "". Для "" || undefined он возвращает undefined. В обоих случаях это потому, что это то, что находится в позиции b.

1

The || оператор возвращает первый аргумент, который оценивается как истинный. Если все аргументы ложны, то он просто возвращает последний аргумент, каким бы он ни был.

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