¿Por qué es que las variables de Javascript se crean indefinidas incluso si no pasan la sentencia if?

Toma esto por ejemplo.

if (b) b = 1;

Error de referencia. b no está definido. Tiene sentido pero si hago esto ...

if (b) var b = 1;

Me quedo indefinido en la consola. y ahora, cuando miro hacia arriba, qué b es se muestra como indefinido.

Si trato de hacer lo mismo si la declaración de nuevo, no pasa porque b no es ni verdadera ni falsa, no está definida, pero supongo que mi pregunta es ¿por qué aparece como indefinida? ¿Javascript pasa por la sentencia if, independientemente de si la sentencia if pasa o falla? Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta