2010-12-26 7 views

ответ

6

Все значения в Javascript являются либо «правдивыми», либо «фальшивыми».

  • a && b вычисляет первый операнд falsy
  • a || b вычисляет первый операнд truthy

Оба оператора не будет оценивать любые операнды после одного возвращения.
Если все операнды не совпадают, он будет оцениваться последним.

  • !a вычисляет true если a является falsy и false если a является truthy.

Все значения являются правдивым, за исключением следующих:

  • false
  • 0
  • NaN
  • ""
  • null
  • undefined
+1

Он должен указывать «Все * значения * являются правдивыми ...», так как значение «undefined» является значением, но есть также переменная «undefined», которая имеет это значение, по умолчанию. Кроме того, «NaN» не равно ни к чему, даже к самому себе. –

+0

@Ivo: 1: Исправлено. 2: Это не имеет значения; '! NaN' является' истинным', поэтому 'NaN' является ложным. – SLaks

+0

Еще NaN == NaN является ложным. Таким образом, это все-таки особый случай из приведенного выше списка, можно подумать, что NaN работает как любое другое значение фальши. –

1

Если вы хотите проверить, что как двух условий truthy затем использовать & &:

if (isX && isY) 
{ 
    // Do something. 
} 

Если вы хотите проверить, что один или оба двух условий являются правдивыми, то используют ||:

if (isX || isY) 
{ 
    // Do something. 
} 

! инвертирует логическое значение (истинное значение становится ложным и наоборот).

+2

Как насчет 'document.write (" Cat "||" Dog ")'? – DarkLightA

+0

@DarkLightA: Я бы посоветовал вам не писать такой код! Он вызывает неявные преобразования, и это смутит всех. –

+1

Хорошо, это было в MDC: D – DarkLightA