function x() {}
es hoisted al inicio del alcance fn
's, y esto hace que efectivamente x
se evalúa una variable local antes .
La función es no establecida en 10
.
Actualización: La frase anterior es incorrecta. x
en realidad se establece en 10
. var
no se utiliza para declarar, pero incluso si lo fuera, la última frase en la cita a continuación sólo se refiere a la declaración parte del nombre x
, no su asignación a 10
.
De MDN (el énfasis es mío):
función
Tres formas con diferentes comportamientos alcance:
- declarada: como una declaración en la parte superior función madre -level
- se comporta como una unión que var consigue inicializan a esa función
- inicialización "montacargas" a lo más alto de la función madre, por encima de vars
var
- alcance funcional
- alzar a la cima de su función
- redeclarations del mismo nombre en el mismo ámbito hay-ops
Bizarre ... Si comenta la línea 'function x() ...', alerta '10'. – Shmiddty