Artigo original: JavaScript Data Types: Typeof Explained
O typeof
é uma palavra-chave em JavaScript que retornará o tipo da variável quando você a chama. Você pode usá-la para validar parâmetros de função ou verificar se as variáveis estão definidas. Há outros usos também.
O operador typeof
é útil porque é uma maneira fácil de verificar o tipo de uma variável em seu código. Isso é importante porque o JavaScript é uma linguagem dinamicamente tipada (texto em inglês). Isso quer dizer que você não é obrigado a atribuir tipos a variáveis quando as cria. Como uma variável não é restrita desse modo, o seu tipo pode mudar durante o tempo de execução de um programa.
Por exemplo:
var x = 12345; // number
x = 'string'; // string
x = { key: 'value' }; // object
Como você pode ver no exemplo acima, uma variável em JavaScript pode mudar seu tipo durante a execução de um programa. Isso pode ser difícil de acompanhar como um programador. É aqui que o operador typeof
é útil.
O operador typeof
retorna uma string que representa o tipo atual de uma variável. Você o utiliza digitando typeof(variavel)
ou typeof variavel
. Voltando ao exemplo anterior, você pode usá-lo para verificar o tipo da variável x em cada estágio:
var x = 12345;
console.log(typeof x) // number
x = 'string';
console.log(typeof x) // string
x = { key: 'value' };
console.log(typeof x) // object
Isso pode ser útil para verificar o tipo de uma variável em uma função e continuar conforme o caso.
Aqui está um exemplo de uma função que pode receber uma variável que é uma string ou um número:
function fazerAlgo(x) {
if(typeof(x) === 'string') {
alert('x é uma string')
} else if(typeof(x) === 'number') {
alert('x é um número')
}
}
Outra maneira do operador typeof
poder ser útil é assegurando que uma variável esteja definida antes que você possa tentar acessá-la em seu código. Isso pode ajudar a evitar erros em um programa que podem ocorrer se você tentar acessar uma variável que não esteja definida.
function(x){
if (typeof(x) === 'undefined') {
console.log('A variável x não está definida');
return;
}
// Continue com a função aqui...
}
A saída do operador typeof
pode não ser sempre o que se espera quando se verifica a existência de um número.
Os números podem se tornar o valor NaN (Não é um Número - Not a Number) por múltiplos motivos.
console.log(typeof NaN); //"number"
Talvez você tenha tentado multiplicar um número com um objeto porque se esqueceu de acessar o número dentro do objeto.
var x = 1;
var y = { number: 2 };
console.log(x * y); // NaN
console.log(typeof (x * y)); // number
Na verificação de um número, não é suficiente verificar a saída de typeof
para um número, uma vez que NaN
também passa nesse teste.
Esta função verifica os números e também não permite que o valor NaN
passe.
function eUmNumero(dado) {
return (typeof dado === 'number' && !isNan(dado));
}
Mesmo pensando que este é um método de validação útil, temos que ter cuidado , pois o JavaScript tem algumas partes estranhas e uma delas é o resultado do typeof
sobre instruções particulares. Por exemplo, em JavaScript muitas coisas são apenas objetos para que você pode encontrar.
var x = [1,2,3,4];
console.log(typeof x) // object
console.log(typeof null) // object