JavaScriptやChromeコンソールの動作に深く混乱しています。誰かが私の理解を助けることができる?変数がまだ割り当てられていないよう - - 代わりに、それは印刷し、私は[]
を印刷するCOPIED 1
を期待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();
:
は基本的に私は、次のJavaScriptコードは、任意の関数や他のスコープ内にネストされていません[2, 9, 8, 6, 0, 2, 1]
- それが割り当てられた後の値です。
なぜですか?
ちなみに、8行目をinitial_array = copied_array
に置き換えた場合、RESULTS 1
は確かに[]
と表示されます。それは.push
を使用すると何か?
興味深い。これは同じ問題に対処しているようですか? [リンク](http://zef.me/2843/javascript-the-scope-pitfall) – j08691
似たような質問:http://stackoverflow.com/questions/4057440/is-chromes-javascript-console-lazy-about-評価する配列 – diEcho