so habe ich dieses seltsame Problem in JavaScript 'Kopieren' ein Array:Ärger ein Array in JavaScript
var a = [0];
var b = a;
b[0]++;
alert(a);
alert(b);
gibt mir als Benachrichtigungen 1
und 1
während ich 0
und 1
erwartet .
Wenn ich slice
verwenden Sie das Array kopieren funktioniert:
var a = [0];
var b = a.slice(0);
b[0]++;
alert(a);
alert(b);
Warum ist das so?
Ich konnte nichts finden, um mir dieses Problem zu erklären.
Was ist nicht zu bekommen? Du hast gesagt, dass "a" und "b" dasselbe sind. Zwei "Zeiger" auf die gleiche Sache. Während Sie im zweiten Fall ein neues Ding erstellen, indem Sie das ursprüngliche Ding kopieren, haben Sie zwei Hinweise auf zwei verschiedene Dinge. –
Im ersten Fall haben Sie die Referenz einer Variablen der zweiten zugewiesen, so dass der Wert in beiden erhöht wird. Im zweiten Fall hat slice eine flache Kopie des ersten Arrays erstellt, so dass Sie den gleichen Wert nicht erhöht haben. – gurvinder372
In ES6 verwenden lassen b = [... a] –