Elevación de variables - "var" con nombre de variable global en función
Estaba practicando algún escenario y encontré un caso:
De acuerdo con la función de barra de cierre debe tener acceso avar x
por lo que esperaba para alertar 1 y obtener la condición falsa debido aif(!1)
pero alertóundefined
y la condición se vuelve verdadera y la segunda alerta es con valor 10.
var x = 1;
function bar() {
alert(x);
if (!x) {
var x = 10;
}
alert(x);
}
bar();
¿Entonces estoy confundido de por qué está pidiendo indefinido?
De acuerdo con la elevación en un ámbito particular, usted define una variable en cualquier lugar que se considere como definida en la parte superior siempre.
Si se debe a un efecto de elevación, todavía tiene que alertar 10 en lugar de indefinido.