2017-12-31 156 views
0

Ich las vor, dass der einzige Weg, um den Wert einer Variablen hält sich ändern wird, um eine Zuweisungsoperator (=, +=, ..)
Aber in diesem Beispiel aus mdn, nums variable Erträge zwei verschiedenen Werte durch Ändern eines der Arrays, die in der Zuweisung verwendet werden, ohne einen Zuweisungsoperator zu verwenden.Wie können Sie den Wert einer Variablen ändern?

var num1 = [[1]]; 
 
var num2 = [2, [3]]; 
 

 
var nums = num1.concat(num2); 
 
console.log(nums); 
 

 
num1[0].push(4); 
 
console.log(nums);

Wenn ich jedoch die verschachtelte Array entfernen und drücken nur 4 zu num2 Array der bedruckte Wert direkt ändern, nicht auf.
prüfen diese example

Antwort

2

concat Die Funktion gibt einen neuen Array, der Elemente der beiden Arrays umfasst.

Im ersten Fall enthält das Array num1 und nums Verweise auf dasselbe innere Array. Wenn Sie es also ändern, wird es in beiden widergespiegelt.

Im zweiten Fall enthalten die Arrays Zahlen, und zwischen den Arrays wird nichts geteilt. Deshalb ändert sich der andere nicht, wenn man auf einen drückt.

Wie bei der Zuweisung Verwirrung, nums zeigt immer auf das gleiche Array, bis Sie einen neuen Wert zu nums zuweisen. Das bedeutet nicht, dass Sie den Inhalt des Arrays selbst nicht ändern können.

+0

Das stimmt. Für weitere Informationen, lesen Sie eine vollständige Beschreibung von concat: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat –

+0

Vielen Dank für die Erklärung Nimord –

Verwandte Themen