我对JavaScript或Chrome控制台的行为深感困惑。有人能帮助我理解吗?JavaScript控制台在分配变量之前打印分配的变量值?
基本上我有以下的JavaScript代码,而不是嵌套任何函数或其他范围内:
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();
我希望COPIED 1
打印[]
- 作为变量尚未分配的 - 而是它打印[2, 9, 8, 6, 0, 2, 1]
- 即分配后的值。
为什么?顺便提一下,如果用initial_array = copied_array
替换第8-11行,那么RESULTS 1
确实打印为[]
。这与使用.push
有关吗?
有趣。这似乎是解决同一个问题吗? [链接](http://zef.me/2843/javascript-the-scope-pitfall) – j08691 2012-01-05 18:15:30
类似的问题:http://stackoverflow.com/questions/4057440/is-chromes-javascript-console-lazy-about-评估数组 – diEcho 2012-01-05 18:16:32