疑問点
以下のようなJavaScriptコードを動作させました。
JavaScript
1function test_func1(x){ 2 x[0] += 1; 3 return x; 4} 5 6function test_func2(x){ 7 x[0].melon += 1; 8 return x; 9} 10 11function test_print(){ 12 let a = [0, 1]; 13 let b = [{melon:0, apple:0}, {melon:0, apple:1}]; 14 console.log(a); // [0, 1]が出力される 15 console.log(b); // [{melon:1, apple:0}, {melon:0, apple:1}]が出力される(なぜ?) 16 a = test_func1(a); 17 b = test_func2(b); 18 console.log(a); // [1, 1]が出力される 19 console.log(b); // [{melon:1, apple:0}, {melon:0, apple:1}]が出力される 20} 21 22test_print(); 23
関数test_func2を通過した後の**console.log(b)のmelonが1になるのは分かるのですが、なぜ関数を通過する前のconsole.log(b)**のmelonまでもが1になるのか、お教えいただけると幸いです。
実行環境
Microsoft Edge 開発者ツール内のコンソール(バージョン 96.0.1054.34)
(環境によっては理想通りに出力されるようなのですが、上記環境では疑問点のような出力が行われてしまいました。Chromeでも同様です。)
回答2件
あなたの回答
tips
プレビュー