Come verificare se il tipo è booleano


269

Come posso verificare se il tipo di una variabile è di tipo booleano?

Voglio dire, ci sono alcune alternative come:

if(jQuery.type(new Boolean()) === jQuery.type(variable))
      //Do something..

Ma questo non mi sembra carino.

C'è un modo più pulito per raggiungere questo obiettivo?


1
Non sono trueo falsedi tipo booleano?
Matias Cicero,

1
Non è necessario controllare, è possibile farlo !!( ... some expression ...)e il risultato sarà un valore booleano.
Callum Linington

1
No: truee falsesono primitivi di tipo boolean. Il tipo booleano capital-B è un tipo di wrapper di oggetti per primitive booleane.
Pointy

@CallumLinington che non funzionerà con gli oggetti creati con il costruttore booleano :)
Pointy

1
@CallumLinington provare: if (new Boolean(false)) alert("hi");- un oggetto booleano in maiuscolo-B è sempre "veritiero", indipendentemente dal valore booleano piccolo-b sottostante.
Pointy

Risposte:


506

Ecco a cosa typeofserve. Le parentesi sono opzionali in quanto è un operatore .

if (typeof variable === "boolean"){
  // variable is a boolean
}

7
Non è chiaro cosa sta tentando di fare l'OP, ma gli oggetti booleani maiuscoli-B danno "oggetto" come tipo tramite typeof.
Pointy

14
1) typeofnon è una funzione. 2) L'uso dell'operatore triplo === con typeofnon è necessario, poiché restituirà sempre una stringa (a proposito, ma per quanto ricordo, c'era un altro caso per alcuni browser molto vecchi). 3) typeofe il confronto delle stringhe è lento. Non usarli. Controlla direttamente con (variable === true || variable === false)(suggerisco di scrivere una funzione).
StanE

6
non typeof(variable) === typeof(true)sarebbe più robusto?
Marco Giunio Bruto,

2
@TusharNiras nameè una proprietà di finestra globale con uno speciale getter developer.mozilla.org/en-US/docs/Web/API/Window/name
Zach Lysobey

1
@MarcusJuniusBrutus @AmitJoki è una sciocchezza, non c'è alcun vantaggio nell'usare più prolissi typeof trueinvece di "boolean". Le nuove versioni di ECMAScript non subiranno mai modifiche sostanziali.
m93a,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.