2012-03-19 3 views
6

Мне было интересно, когда выражение Javascript if фактически оценивает false и когда true. Когда указано заявление iffalse и это верно для всех переводчиков JS?Javascript если выражение оценка

Я предполагаю, что условие false на

  • false
  • undefined
  • null
  • 0

иначе true. Это правильно для всех реализаций (проверено в консоли Safari/WebKit), или мне лучше с явной проверкой, например, (typeof a === "undefined")?

ответ

1

Если вы хотите, чтобы проверить переменное существование, и a не объявлен в любом месте вашего скрипта, typeof a === 'undefined' путь, или вы можете использовать if (!window.a). В противном случае вызывается ReferenceError.

Ваши предположения кажутся правильными. Пустая строка и NaN также оцениваются до false (или, как некоторые из них falsy). Тот факт, что 0 оценивается в false, может быть сложным, но он также удобен в таких выражениях, как while (i--) (если i имеет значение 0, он принимает значение false, а цикл while останавливается).

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