我對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