2015-07-01 58 views
23

Ho una variabile. Chiamiamolo toto.Il modo più semplice per convertire in booleano

Questo toto può essere impostato su undefined, null, una stringa o un oggetto.

Vorrei il modo più pulito per controllare se toto è impostato su un dato, che significa impostato su una stringa o un oggetto, e né undefinednull, e impostare il valore booleano corrispondente in un'altra variabile.

ho pensato alla sintassi !!, che sarebbe simile a questa:

var tata = !!toto; // tata would be set to true or false, whatever toto is. 

La prima ! verrebbe impostato false se toto è undefined o null e true altro, e la seconda sarebbe invertire esso.

Ma sembra un po 'inquietante ... Quindi c'è un modo migliore/più pulito per farlo?

Ho già cercato this question, ma voglio impostare un valore in una variabile, non solo controllarlo in una dichiarazione if.

+3

Questa domanda è contrassegnato come duplicato, ma se si guarda l'altra domanda http://stackoverflow.com/questions/263965/how-can-i-convert-a-string-to-boolean-in-javascript è abbastanza diverso; non sono affatto duplicati – Sam

+0

@Sam Ci dispiace, ma mi sono confermato questo duplicato, non sapevo di questa altra domanda, ma ha risolto il mio problema. – Aracthor

+2

@Aracthor NON è un duplicato, perché http://stackoverflow.com/questions/263965/how-can-i-convert-a-string-to-boolean-in-javascript riguarda la conversione di stringhe contenenti solo le parole " true "e" false "alle loro controparti booleane. Questa domanda riguarda la conversione di QUALSIASI variabile in un booleano a seconda che si tratti di verità o falsità. –

risposta

43

Sì, si può sempre usare questo:

var tata = Boolean(toto); 

E qui ci sono alcune prove:

for (var value of [0, 1, -1, "0", "1", "cat", true, false, undefined, null]) { 
    console.log(`Boolean(${typeof value} ${value}) is ${Boolean(value)}`); 
} 

risultati:

Boolean(number 0) is false 
Boolean(number 1) is true 
Boolean(number -1) is true 
Boolean(string 0) is true 
Boolean(string 1) is true 
Boolean(string cat) is true 
Boolean(boolean true) is true 
Boolean(boolean false) is false 
Boolean(undefined undefined) is false 
Boolean(object null) is false 
+21

Da notare, Boolean ("false") è vero, quando probabilmente vuoi che sia falso. –

+7

Perché mai ti piacerebbe che la stringa "false" fosse falsa? Anche php non lo fa: D – Danon

+0

@NoahDavid Non ho capito cosa stai cercando di dire. Ho semplicemente eseguito il codice 'Boolean (false)' nella console degli strumenti per sviluppatori e restituisce 'false'. In quale contesto ritornerà 'true'? – RBT

Problemi correlati