javascript変数の割当値は配列であり、参照伝達の坑である.
426 ワード
記録は今日2時間のバグを処理しました.コードは以下の通りです.
一昨日、5月19日、またピットに会いました.行列引用はピットだと思っていました.
var a ={
id:[1,2,3]
}
var d = a.id;
d.push(4);
console.dir(a);
予想はa.id=[1,2,3]ですが、結果はa.id=[1,2,3,4]です.これは引用伝達です.肝に銘じる一昨日、5月19日、またピットに会いました.行列引用はピットだと思っていました.
var a = [1,2,3];
var b = a.slice();
b[2] = 1110;
このように解決しましたが、引用内に引用がある場合:var a = [{id:1}];
var b = a.slice();
b[0].id = 2;
このような方式で同意すると穴があいます.覚えておいてください.