2016-02-26 4 views
8

Qualcuno può spiegare JavaScript Truthy e Falsy, utilizzando i dati di esempio sottostanti. Ho letto altri thread ma sono ancora confuso.Informazioni su JavaScript Truthy and Falsy

var a = 0; 

var a = 10 == 5; 

var a = 1; 

var a = -1; 

Dalla mia comprensione, credo che var a = 1; è l'unica truthy e il resto sono falsy - è corretto?

+0

Possibile duplicato di [Risultati di "verità" e "falso" confondono in JavaScript] (http://stackoverflow.com/questions/35132997/results-of-truthy-and-falsey-is-confusing-in- javascript) –

risposta

16

Dalla mia comprensione, credo che var a = 1; è l'unica verità e il resto è falsy - è corretto?

No.

  1. var a = 0;

    Numero zero è falsy. Tuttavia, si noti che la stringa zero "0" è sincera.

  2. var a = 10 == 5;

    Questo è stessa var a = (10 == 5);, quindi questo è falsy.

  3. var a = 1;

    var a = -1;

    Qualunque numero diverso da zero numeri negativi è truthy.

Citando MDN

In JavaScript, un valore truthy è un valore che si traduce in vero quando valutato in un contesto booleano. Tutti i valori sono veritieri a meno che non siano definiti falsi (ad esempio, ad eccezione di false, 0, "", null, undefined e NaN).

Elenco dei valori falsy in JavaScript:From MDN

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

Perché sulla terra è 'document.all' falsy ?? – Claudiu

+0

@Claudiu _'document.all' è stato utilizzato per il rilevamento del browser in passato e la specifica HTML definisce una violenta violazione dello standard ECMAScript qui per mantenere la compatibilità con il codice legacy ('if (document.all) {// Internet Explorer codice qui '' o usando 'document.all' senza prima controllare la sua presenza:' document.all.foo') ._ – Tushar

+1

@Tushar: Questo è meravigliosamente ... geniale e orribile allo stesso tempo. – Claudiu

4

C'è un modo semplice per controllare, che è possibile utilizzare ora e per sempre:

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

Vale a dire:

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

anche vedere a list of all falsey values in JavaScript.