Tipo de variável não declarada em JavaScript: O que é?
Você já pensou, qual é o tipo de variável não declarada em JavaScript? Eu sei, a primeira coisa que pode vir à mente é: como uma variável não declarada pode ter um tipo? Sim, em JavaScript é possível.
Você já pensou, qual é o tipo de variável não declarada em JavaScript? Eu sei, a primeira coisa que pode vir à mente é: como uma variável não declarada pode ter um tipo? Sim, em JavaScript é possível.

Para entendê-lo, vamos começar entendendo os tipos em JavaScript. Existem sete tipos integrados em JavaScript. Eles são os seguintes:
- nulo
- indefinido
- booleano
- número
- corda
- object
- symbol (added on ES6)

Cada variável com valor atribuído tem um tipo. Vamos considerar o código listado abaixo:
var foo = 9; console.log(typeof (foo)); // number var koo; console.log(typeof (koo)); // undefined var too = 'Infragistics'; console.log(typeof (too)); // string
Como você pode ver no trecho acima, se não houver nenhum valor atribuído, o tipo de variável será indefinido.

Até aí tudo bem, vimos que a variável sem valor atribuído é indefinida. Vamos considerar o próximo trecho de código:
var koo; console.log(koo); // undefiend console.log(typeof (koo)); // undefined
Criamos uma variável koo e não atribuímos nenhum valor a ela. Agora tanto o valor quanto o tipo de koo estão definidos como indefinidos.

Agora que você entende o tipo e o valor associados a undefined, vamos passar para null. Em JavaScript, null é um tipo primitivo. No entanto, o tipo de valor nulo é object. Considere o código listado abaixo:
var foo = null; console.log(foo); // null console.log(typeof (foo)); // object
Você pode considerar como um bug legado que o tipo de valor nulo é objeto em JavaScript.

Finalmente, mas igualmente importante, em JavaScript, uma variável que não é declarada também tem um tipo. O tipo de variável declarado é indefinido.
console.log(foo);// error foo is not defined console.log(typeof (foo)); // undefined
Quando você lê o valor da variável, que não é declarado, o JavaScript retornará um erro "não definido" e retornará seu tipo como indefinido

Além disso, tenha em mente que no mundo do JavaScript não definido não é o mesmo que indefinido. Espero que agora você entenda vários tipos primitivos em JavaScript.