2016-02-26 3 views
8

Может кто-нибудь объяснить объяснение JavaScript Truthy и Falsy, используя приведенные ниже данные образца. Я прочитал другие темы, но все еще смущен.Понимание JavaScript Truthy and Falsy

var a = 0; 

var a = 10 == 5; 

var a = 1; 

var a = -1; 

Из моего понимания, я считаю, что var a = 1; является единственным truthy, а остальные falsy - это правильно?

+0

Возможный дубликат [Результаты «правдивого» и «ложного» запутываются в JavaScript] (http://stackoverflow.com/questions/35132997/results-of-truthy-and-falsey-is-confusing-in- javascript) –

ответ

16

Из моего понимания, я считаю, что var a = 1; является единственной правдой, а остальные фальши - это правильно?

Номер

  1. вар а = 0;

    Номер ноль: falsy. Однако обратите внимание, что нулевая строка "0" является правдой.

  2. var a = 10 == 5;

    Это так же, как var a = (10 == 5);, так что это falsy.

  3. var a = 1;

    var a = -1;

    Любое ненулевое число, включая отрицательные числа, правша.

Цитируя MDN

В JavaScript, truthy значение является значением, которое переводится верно, когда оценивается в логическом контексте. Все значения являются правдивыми, если они не определены как фальшивые (то есть, за исключением false, 0, "", null, undefined и NaN).

Список falsy значений в JavaScript:From MDN

  1. false
  2. null
  3. undefined
  4. 0
  5. NaN
  6. ''
  7. document.all
+0

Почему на самом деле «document.all' falsy ?? – Claudiu

+0

@Claudiu _'document.all' использовался для обнаружения браузера в прошлом, а спецификация HTML определяет умышленное нарушение стандарта ECMAScript здесь, чтобы сохранить совместимость с устаревшим кодом ('if (document.all) {// Internet Explorer код здесь} 'или используя' document.all', не проверяя его присутствие сначала: 'document.all.foo'.. – Tushar

+1

@Tushar: Это чудесно ... блестяще и ужасно в то же время. – Claudiu

4

Там простой способ проверить, что вы можете использовать теперь и навсегда:

function truthyOrFalsy(a) { 
    return a ? "truthy" : "falsy"; 
} 

А именно:

> truthyOrFalsy(0) 
"falsy" 
> truthyOrFalsy(10 == 5) 
"falsy" 
> truthyOrFalsy(1) 
"truthy" 
> truthyOrFalsy(-1) 
"truthy" 

Также см a list of all falsey values in JavaScript.

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