Javascript, var name = 1, "typeof name" da "string"? [duplicar

Esta pregunta ya tiene una respuesta aquí:

var name produce resultados extraños en Javascript [duplicado] 5 respuestas

Encontré este extraño problema, cuando escribo el código Javascript como a continuación:

var name = 1;
alert(typeof name); // this will alert "string"
var b = 1;
alert(typeof b); // this will alert "number"

Obtuve "string" para "typeof name", pero obtuve "number" para "typeof b", sin embargo, creo que ambos deberían ser "number"

Y este código tampoco se ejecutará:

var name = 1;
if (name === 1) {
    alert("ok")
}

¡No alertará, ya que el tipo de nombre es "string"!

He probado el código anterior en Chrome y Safari, ambos dan el mismo resultado, entonces, ¿por qué "typeof name" es "string" en este caso? ¿Por qué el nombre de la variable "nombre" es tan especial?

Respuestas a la pregunta(1)

Su respuesta a la pregunta