で配列をコピー:私は0
と1
を期待している間にトラブルので、私は、配列JavaScriptの「コピー」で、この奇妙な問題を抱えているJavaScriptの
var a = [0];
var b = a;
b[0]++;
alert(a);
alert(b);
アラート1
と1
として私を与えます。
私は配列をコピーするslice
を使用している場合は正常に動作します:
var a = [0];
var b = a.slice(0);
b[0]++;
alert(a);
alert(b);
なぜこれがそうですか?
私はこの問題を私に説明するために全く何も見つかりませんでした。
何が得られないのですか?あなたは「a」と「b」は同じことだと言った。同じものへの2つの "ポインタ"。後者の場合、元のものをコピーして新しいものを作成するのに対し、2つの異なるものへの2つのポインタがあります。 –
最初のケースでは、変数の参照を2番目の変数に割り当てたので、値は両方でインクリメントされます。 2番目のスライスでは、sliceは最初の配列の浅いコピーを作成し、同じ値をインクリメントしませんでした。 – gurvinder372
ES6では を使用します。b = [... a] –