2015-07-01 13 views
23

Mam zmienną. Nazwijmy to: toto.Najłatwiejszy sposób konwersji na wartość logiczną

Ten toto można ustawić na undefined, null, ciąg lub obiekt.

Chciałbym najczystszym sposobem sprawdzenia czy toto jest ustawiony do danych, co oznacza, ustawionym na sznurku lub obiektu, ani undefined ani null i ustawić odpowiadającą wartość logiczną w innej zmiennej.

Pomyślałem składni !!, że będzie wyglądać następująco:

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

Pierwszy ! będzie ustawiony na false czy toto jest undefined lub null i true indziej, a drugi będzie go odwrócić.

Ale wygląda to trochę przerażająco ... Czy istnieje lepszy/czysty sposób na zrobienie tego?

Już wyglądałem this question, ale chcę ustawić wartość w zmiennej, a nie tylko sprawdzić ją w oświadczeniu if.

+3

To pytanie jest oznaczone jako duplikat, ale jeśli spójrz na inne pytanie http://stackoverflow.com/questions/263965/how-can-i-convert-a-string-to-boolean-in-javascript jest zupełnie inny; nie są one w ogóle duplikatami – Sam

+0

@Sam Przepraszam, ale potwierdziłem sobie ten duplikat, nie wiedziałem o tym innym pytaniu, ale to rozwiązało mój problem. – Aracthor

+2

@Araktor NIE jest duplikatem, ponieważ http://stackoverflow.com/questions/263965/how-can-i-convert-a-string-to-boolean-in-javascript dotyczy konwersji łańcucha zawierającego tylko słowa " true "i" false "dla ich odpowiedników logicznych. To pytanie dotyczy zamiany dowolnej zmiennej na wartość logiczną na podstawie tego, czy jest to prawda czy fałsz. –

Odpowiedz

43

Tak, zawsze można użyć tego:

var tata = Boolean(toto); 

A oto kilka testów:

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

Wyniki:

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

Warto zauważyć, że Boolean ("false") jest prawdziwe, jeśli prawdopodobnie chcesz, aby było fałszywe. –

+7

Dlaczego, na litość, chciałbyś, żeby ciąg "false" był fałszywy? Nawet php tego nie robi: D – Danon

+0

@NoahDavid Nie dostałem tego, co próbujesz powiedzieć. Po prostu uruchomiłem kod 'Boolean (false)' w konsoli programisty i zwraca 'false'. W jakim kontekście zwróci "true"? – RBT