¿Cómo puedo verificar si el tipo de una variable es de tipo booleano?
Quiero decir, hay algunas alternativas como:
if(jQuery.type(new Boolean()) === jQuery.type(variable))
//Do something..
Pero eso no me parece bonito.
¿Hay una forma más limpia de lograr esto?
javascript
jquery
types
Matias Cicero
fuente
fuente
true
ofalse
de tipo booleano?!!( ... some expression ...)
y el resultado será un booleano.true
yfalse
son primitivas de tipoboolean
. El tipo booleano capital-B es un tipo de envoltura de objetos para primitivas booleanas.if (new Boolean(false)) alert("hi");
- un objeto booleano con mayúscula B siempre es "verdadero", independientemente del valor booleano little-b subyacente.Respuestas:
Para eso
typeof
está ahí. Los paréntesis son opcionales ya que es un operador .fuente
typeof
.typeof
no es una función. 2) Usando el operador triple === contypeof
No se requiere , ya que devolverá siempre una cadena (afaik, pero por lo que recuerdo, hubo otro caso para algunos navegadores muy antiguos). 3)typeof
y las comparaciones de cadenas son lentas. No los uses. Consulte directamente con(variable === true || variable === false)
(sugiero escribir una función).typeof(variable) === typeof(true)
sería más robusto?name
es una propiedad de ventana global con un captador especial developer.mozilla.org/en-US/docs/Web/API/Window/nametypeof true
lugar de"boolean"
. Las nuevas versiones de ECMAScript nunca tendrán cambios importantes.Si solo desea verificar un valor primitivo
Si por alguna extraña razón tiene booleanos creados con el constructor, esos no son realmente booleanos, sino objetos que contienen un valor booleano primitivo, y una forma de verificar los booleanos primitivos y los objetos creados con
new Boolean
es hacer:Mostrar fragmento de código
fuente
new Boolean()
, que técnicamente no es un booleano, sino un objeto, pero aún se mantiene Un valor booleano.new Boolean()
devuelve un objeto (ver comentarios en la pregunta). Pero lo que sea :)typeof variable === typeof new Boolean()
y probablemente solo quiere un tipo de verificación regular, pero de alguna manera quedó atrapado en una extraña sintaxis de jQuery.bool
parámetro pasado fueranull
eltypeof bool === 'object'
que aún se evaluaría y seTypeError: Cannot read property 'valueOf' of null
generaría una excepción en la llamada atypeof bool.valueOf()
. Por lo tanto, me gustaría cambiar la última línea para que diga:(typeof bool === 'object' && bool && typeof bool.valueOf() === 'boolean');
que evaluar sólo cuandobool
es no nula.Con JavaScript puro , simplemente puede usar
typeof
y hacer algo comotypeof false
otypeof true
y volverá"boolean"
...Pero esa no es la única forma de hacerlo, estoy creando funciones a continuación para mostrar diferentes formas en que puede verificar Boolean en JavaScript, también diferentes formas en que puede hacerlo en algunos marcos nuevos, comencemos con este:
O una línea ES6 forma ...
y llámalo como!
También en el código fuente de subrayado lo comprueban así (con el _. Al comienzo del nombre de la función):
También en jQuery puedes verificarlo así:
En React , si usa propTypes, puede verificar que un valor sea booleano como este:
Si usa TypeScript , puede usar type boolean también:
También otra forma de hacerlo, es como convertir el valor a booleano y ver si es exactamente igual, algo así como:
o como:
y llámalo!
No se recomienda usar ningún marco para esto, ya que es realmente una simple verificación en JavaScript.
fuente
new Boolean(true) === new Boolean(true)
debe devolver falso (ya que las referencias son diferentes). Es por esoisBoolean(new Boolean(true))
que dirá falso mientras debe ser verdadero (new Boolean(true)
es de tipo booleano ).Hay tres formas "vainilla" de verificar esto con o sin jQuery.
Primero es forzar la evaluación booleana por coerción, luego verifique si es igual al valor original:
Haciendo un simple
typeof
chequeo:Hacer una exageración completamente innecesaria e innecesaria de un contenedor de clase en una primitiva:
El tercero solo regresará
true
si crea unanew Boolean
clase y la pasa.Para profundizar en la coerción de primitivas (como se muestra en el n. ° 1), todos los tipos de primitivas se pueden verificar de esta manera:
Boolean
:Number
:String
:fuente
typeof
? Lo dudo mucho.typeof
también es 1 coerción, pero eltypeof
método hace algunos captadores y comparaciones dentro de la comparación + 1 al final. Aquí está la referencia V8typeof
!!
es más rápido, uno dice queBoolean
es más rápido. Solo una referencia a cuán pequeño es el delta entre pruebas. Los cheques booleanos son rápidos. jsperf.com/bool-not-not jsperf.com/bool-vs-doublenottypeof val === "boolean"
es óptimo.Puede usar Javascript puro para lograr esto:
fuente
Si desea que su función también pueda validar objetos booleanos, la solución más eficiente debe ser:
fuente
La forma más confiable de verificar el tipo de una variable en JavaScript es la siguiente :
La razón de esta complicación es que
typeof true
regresa"boolean"
mientrastypeof new Boolean(true)
regresa"object"
.fuente
"boolean"
si el valor realmente es un objeto? Eso no me parece muy práctico. Los objetos booleanos tienen que tratarse de manera diferente a las primitivas booleanas de todos modos.Yo iría con Lodash: isBoolean comprueba si la variable pasada es un objeto booleano primitivo o un objeto de envoltorio booleano y, por lo tanto, tiene en cuenta todos los casos.
fuente
Puede crear una función que verifique
typeof
si hay un argumento.fuente
A veces necesitamos una única forma de verificarlo. typeof no funciona para la fecha, etc. Así que lo hice fácil al
También para
Number
,String
,Boolean
etc a menudo necesitamos para comprobar el tipo de una sola manera ...fuente
Crear funciones como la
isBoolean
que contiene onelinertypeof v === "boolean"
parece muy desagradable a largo plazo. Me sorprende que casi todos sugieran crear su propia función. Parece ser el mismo cáncer que extender los prototipos nativos.solo memorizar
typeof v === "boolean"
y eso es todo. Agregue una plantilla a su IDE para poder ponerla en un atajo de tres letras y ser feliz.fuente
v === true || v === false
, que hace 2 verificaciones en caso defalse
. Clasificación: (1 - ambos prácticamente iguales)typeof v === 'boolean
ytypeof v === typeof true
, (2)isBoolean(v)
, (3)v === true || v === false
.si tienes una cuerda
fuente
val === false || val === true
.typeof variable == typeof true
.El más corto, pero no se puede leer en absoluto:
!!val === val
.Explicación:
Pruebas:
fuente
En nodejs usando node-boolify podemos usar isBoolean ();
fuente
Una decisión más con la función de flecha es2015
fuente