¿Cómo funciona la elevación si JavaScript es un lenguaje interpretado?
Tengo entendido que un intérprete ejecuta el programa línea por línea y podemos ver los resultados instantáneos, a diferencia de los lenguajes compilados que convierten el código y luego lo ejecutan.
Mi pregunta es, en Javascript, ¿cómo sabe el intérprete que una variable se declara en algún lugar del programa y la registra comoundefined
?
Considere el siguiente programa:
function do_something() {
console.log(bar); // undefined (but in my understanding about an interpreter, it should be throwing error like variable not declared)
var bar = 111;
console.log(bar); // 111
}
Se entiende implícitamente como:
function do_something() {
var bar;
console.log(bar); // undefined
bar = 111;
console.log(bar); // 111
}
¿Como funciona esto?