Em Java, você pode usar instanceOf
ou getClass()
em uma variável para descobrir seu tipo.
Como descubro o tipo de uma variável no JavaScript que não é fortemente tipado?
Por exemplo, como sei se bar
é um Boolean
ou a Number
ou a String
?
function foo(bar) {
// what do I do here?
}
javascript
Tom Tucker
fonte
fonte
Respostas:
Use
typeof
:Então você pode fazer:
Tenha cuidado, porém, se você definir essas primitivas com seus invólucros de objetos (o que você nunca deve fazer, use literais sempre que possível):
O tipo de uma matriz ainda é
object
. Aqui você realmente precisa doinstanceof
operador.Atualizar:
Outra maneira interessante é examinar a saída de
Object.prototype.toString
:Com isso, você não precisaria distinguir entre valores e objetos primitivos.
fonte
typeof é bom apenas para retornar os tipos "primitivos", como número, booleano, objeto, string e símbolos. Você também pode usar
instanceof
para testar se um objeto é de um tipo específico.fonte
Usando
type
:fonte
Number(1), Boolean(true)...
Os únicos problemas são quando você usanew
e um objeto em caixa é criado, usá-los como funções pode ser realmente útil na conversão de outros tipos.Boolean(0) === false, Number(true) === 1
null
?typeof null
é 'objeto'Em Javascript, você pode fazer isso usando a função typeof
fonte
Para ser um pouco mais preciso do ECMAScript-5.1 do que as outras respostas (alguns podem dizer pedantes):
Em JavaScript, variáveis (e propriedades) não têm tipos: os valores possuem. Além disso, existem apenas 6 tipos de valores: Indefinido, Nulo, Booleano, String, Número e Objeto. (Tecnicamente, também existem 7 "tipos de especificação", mas você não pode armazenar valores desses tipos como propriedades de objetos ou valores de variáveis - eles são usados apenas dentro da própria especificação para definir como a linguagem funciona. você pode manipular explicitamente são apenas dos 6 tipos listados.)
A especificação usa a notação "Tipo (x)" quando deseja falar sobre "o tipo de x". Esta é apenas uma notação usada dentro das especificações: não é um recurso do idioma.
Como outras respostas deixam claro, na prática você pode querer saber mais do que o tipo de um valor - principalmente quando o tipo é Objeto. Independentemente, e para ser completo, aqui está uma implementação JavaScript simples do Type (x), conforme é usada na especificação:
fonte
Acho frustrante que
typeof
seja tão limitado. Aqui está uma versão melhorada:teste de amostra:
fonte
Para tipos JS internos, você pode usar:
Aqui usamos o método 'toString' da classe 'Object', que funciona diferente do mesmo método de outros tipos.
Exemplos:
Se você precisar de um nome de classe, poderá usar:
Exemplos:
Mas esse recurso foi adicionado no ES2015 .
fonte
Aqui está a solução completa.
Para o módulo CommonJs exportável ou o módulo RequireJS ....
Agora você pode importar esse código Sys em um arquivo Sys.js. você pode usar essas funções de objeto Sys para descobrir o tipo de objetos JavaScript
você também pode verificar se o objeto está definido ou o tipo é função ou o objeto está vazio ... etc.
Por exemplo
fonte
Em JavaScript, tudo é um objeto
Para obter o tipo Real , use este
Espero que isto ajude
fonte