如何複製 Array
一般很直覺,如要把A變數等同於B變數的內容。
var B = 'Hello';
var A = B;
B = 'Hi';
console.log(A, B);
很清楚的知道,得到的答案為 Hello Hi,但如果今天複製的是 Array 的話呢?
var B = ['Hello', 'Hi'];
var A = B;
B[0] = 'What!?';
console.log(A, B);
照常理來說答案應該是 ["What!?", "Hi"] ['Hello', 'Hi'] 才對,但丟到瀏覽器去執行的結果竟然為 ["What!?", "Hi"] ["What!?", "Hi"]。
因為 JS Array是參數傳址方式,所以可以用 C = B.slice(); 去解決這樣的問題。
另外一項測試當 console.log( A === B ); 可以得到 true,但 C 已經是另外一個值了,所以當 console.log( C === B ); 的時候,會得到 false。