typeof
es una palabra clave de JavaScript que devolverá el tipo de variable cuando la llame. Puede usar esto para validar los parámetros de la función o verificar si las variables están definidas. También hay otros usos.
El typeof
operador es útil porque es una manera fácil de verificar el tipo de variable en su código. Esto es importante porque JavaScript es un lenguaje escrito dinámicamente. Esto significa que no es necesario que asigne tipos a las variables cuando las crea. Debido a que una variable no está restringida de esta manera, su tipo puede cambiar durante el tiempo de ejecución de un programa.
Por ejemplo:
var x = 12345; // number x = 'string'; // string x = { key: 'value' }; // object
Como puede ver en el ejemplo anterior, una variable en JavaScript puede cambiar de tipo durante la ejecución de un programa. Esto puede ser difícil de seguir como programador, y aquí es donde el typeof
operador es útil.
El typeof
operador devuelve una cadena que representa el tipo actual de variable. Lo usa escribiendo typeof(variable)
o typeof variable
. Volviendo al ejemplo anterior, puede usarlo para verificar el tipo de variable x
en cada etapa:
var x = 12345; console.log(typeof x) // number x = 'string'; console.log(typeof x) // string x = { key: 'value' }; console.log(typeof x) // object
Esto puede ser útil para verificar el tipo de variable en una función y continuar según corresponda.
A continuación, se muestra un ejemplo de una función que puede tomar una variable que sea una cadena o un número:
function doSomething(x) { if(typeof(x) === 'string') { alert('x is a string') } else if(typeof(x) === 'number') { alert('x is a number') } }
Otra forma en que el typeof
operador puede ser útil es asegurándose de que una variable esté definida antes de intentar acceder a ella en su código. Esto puede ayudar a prevenir errores en un programa que pueden ocurrir si intenta acceder a una variable que no está definida.
function(x){ if (typeof(x) === 'undefined') { console.log('variable x is not defined'); return; } // continue with function here... }
Es posible que la salida del typeof
operador no siempre sea la esperada cuando busca un número.
Los números pueden cambiar al valor NaN (No es un número) por múltiples razones.
console.log(typeof NaN); //"number"
Quizás intentaste multiplicar un número con un objeto porque olvidaste acceder al número dentro del objeto.
var x = 1; var y = { number: 2 }; console.log(x * y); // NaN console.log(typeof (x * y)); // number
Al verificar un número, no es suficiente verificar la salida de typeof
un número, ya que NaN
también
pasa esta prueba.
Esta función verifica los números y tampoco permite NaN
que pase el valor.
function isNumber(data) { return (typeof data === 'number' && !isNan(data)); }
Aunque este es un método de validación útil, debemos tener cuidado porque javascript tiene algunas partes extrañas y una de ellas es el resultado de typeof
instrucciones específicas. Por ejemplo, en javascript muchas cosas son solo objects
para que las encuentre.
var x = [1,2,3,4]; console.log(typeof x) // object console.log(typeof null) // object
Más información:
Documentación MDN para typeof