Estoy profundamente confundido por el comportamiento de JavaScript o la consola de Chrome. ¿Puede alguien ayudarme a entender?La consola de JavaScript imprime el valor asignado de la variable antes de que se le haya asignado?
Básicamente tengo el siguiente código JavaScript, no anidado dentro de cualquier función o de otro ámbito:
var initial_array = [];
function initialiseArray() {
initial_array = [2, 9, 8, 6, 0, 2, 1];
}
function copyToNewArray() {
var copied_array = [];
console.log("COPIED 1", copied_array);
for (var i = 0; i < initial_array.length; i++) {
var copy = initial_array[i];
copied_array.push(copy);
}
console.log("COPIED 2", copied_array);
}
initialiseArray();
copyToNewArray();
yo esperaría COPIED 1
para imprimir []
- como la variable no se ha asignado todavía - pero en su lugar se imprime [2, 9, 8, 6, 0, 2, 1]
- es decir, el valor después de que se ha asignado.
¿Por qué?
Por cierto, si reemplaza las líneas 8-11 con initial_array = copied_array
, entonces RESULTS 1
de hecho se imprime como []
. ¿Tiene algo que ver con usar .push
?
Interesante. ¿Esto parece abordar el mismo problema? [link] (http://zef.me/2843/javascript-the-scope-pitfall) – j08691
pregunta similar: http://stackoverflow.com/questions/4057440/is-chromes-javascript-console-lazy-about- evaluación de matrices – diEcho