Editar Parece que fue un problema de mi parte y mi uso de jsfiddle:?Intentando comprender completamente el izado de JavaScript
He estado leyendo un par de artículos sobre elevación últimamente, uno es by Nicholas Zakas, y el otro es by Ben Cherry.
Im tratando de seguir los ejemplos y simplemente probar por mi cuenta para asegurarse de que comprenden totalmente, pero Im tener un problema sobre todo con este ejemplo,
if (!('a' in window)) {
var a = 1;
}
console.log(a);
En lugar de la tala undefined
su registro 1
. Si entiendo todo correctamente, a
debe ser undefined
, porque debe existir en el ámbito de la ventana debido a que la instrucción var se iza al principio, por lo que no se le debe asignar el valor.
Sin embargo, el siguiente está actuando como se esperaba,
(function bar(){
console.log(foo);
var foo = 10;
console.log(baz);
})();
foo
es undefined
, y baz
no está definido. Tengo un fiddle aquí con ambos ejemplos. Realmente solo estoy tratando de entender esto. ¿Ha cambiado algo desde que se escribieron estos artículos? Si alguien puede arrojar algo de luz sobre esto, sería apreciado. Estoy usando Chrome 14 cuando estoy probando.
estoy corriendo el violín en Google Chrome y se imprime 'undefined'. Para una buena explicación de la elevación, puede echarle un vistazo a * O'Reilly JavaScript Patterns *. Hay un ** párrafo ** dedicado. – user278064
Sí, aparentemente fue debido a que no usé jsfiddle correctamente doh. – Loktar