En Java, puede usar instanceOf
o getClass()
en una variable para averiguar su tipo.
¿Cómo descubro el tipo de variable en JavaScript que no está fuertemente tipado?
Por ejemplo, ¿cómo sé si bar
es a Boolean
o a Number
, o a String
?
function foo(bar) {
// what do I do here?
}
javascript
Tom Tucker
fuente
fuente
Respuestas:
Uso
typeof
:Entonces puedes hacer:
Sin embargo, tenga cuidado si define estas primitivas con sus envoltorios de objetos (que nunca debe hacer, use literales siempre que sea posible):
El tipo de una matriz es todavía
object
. Aquí realmente necesitas elinstanceof
operador.Actualizar:
Otra forma interesante es examinar la salida de
Object.prototype.toString
:Con eso no tendrías que distinguir entre valores primitivos y objetos.
fuente
typeof solo es bueno para devolver los tipos "primitivos" como número, booleano, objeto, cadena y símbolos. También puede usar
instanceof
para probar si un objeto es de un tipo específico.fuente
Utilizando
type
:fuente
Number(1), Boolean(true)...
Los únicos problemas son cuando se usanew
y se crea un objeto en caja, usarlos como funciones puede ser realmente útil para la conversión de otros tipos.Boolean(0) === false, Number(true) === 1
null
?typeof null
es 'objeto'En Javascript puedes hacerlo usando la función typeof
fuente
Para ser un poco más preciso con ECMAScript-5.1 que las otras respuestas (algunos podrían decir pedante):
En JavaScript, las variables (y propiedades) no tienen tipos: los valores sí. Además, solo hay 6 tipos de valores: Indefinido, Nulo, Booleano, Cadena, Número y Objeto. (Técnicamente, también hay 7 "tipos de especificación", pero no puede almacenar valores de esos tipos como propiedades de objetos o valores de variables; solo se usan dentro de la propia especificación, para definir cómo funciona el lenguaje. Los valores que puede manipular explícitamente son solo de los 6 tipos que enumeré).
La especificación utiliza la notación "Tipo (x)" cuando quiere hablar sobre "el tipo de x". Esta es solo una notación utilizada dentro de la especificación: no es una característica del lenguaje.
Como aclaran otras respuestas, en la práctica es posible que desee saber más que el tipo de un valor, especialmente cuando el tipo es Objeto. Independientemente, y para completar, aquí hay una implementación simple de JavaScript de Tipo (x) como se usa en la especificación:
fuente
Me resulta frustrante que
typeof
sea tan limitado. Aquí hay una versión mejorada:prueba de muestra:
fuente
Para los tipos JS incorporados puede usar:
Aquí usamos el método 'toString' de la clase 'Object' que funciona de manera diferente al mismo método de otros tipos.
Ejemplos:
Si necesita un nombre de clase, puede usar:
Ejemplos:
Pero esta característica se agregó en ES2015 .
fuente
Aquí está la solución completa.
Para el módulo exportable CommonJs o el módulo RequireJS ...
Ahora puede importar este código Sys en un archivo Sys.js. entonces puede usar estas funciones de objeto Sys para descubrir el tipo de Objetos JavaScript
también puede verificar si el objeto está definido o el tipo es función o el objeto está vacío ... etc.
Por ejemplo
fuente
En JavaScript todo es un objeto
Para obtener el tipo Real , use esto
Espero que esto ayude
fuente