Ich nicht zu tief in JavaScript. Deshalb habe ich folgendes basteln gemacht:Reagieren: Warum ist es notwendig, unveränderliche Requisiten zu haben, wenn Werte trotzdem als Wert übergeben werden?
var demo = 'test';
var obj = {
x: 'abc'
}
function foo(str) {
str += '_123';
return str;
}
var ret = foo(demo);
var retObj = foo(obj.x);
console.log('Result: %s', ret); // => 'test_123'
console.log('Used parameter: %s', demo); // 'test'
console.log('Result: %s', retObj); // 'abc_123'
// The value of the property is still unchanged. So
// it has been passed in as by value. As as copy.
console.log('Used parameter: %s', obj.x); // 'abc'
Ich gebe einen String an die Funktion weiter. Einmal als primitive Variable und das nächste Mal als Objekteigenschaft.
Danach sind die ursprünglichen Daten unverändert. => Das äußere System ist unverändert.
Jetzt frage ich mich:
Warum sie diese Unveränderlichkeit Funktion in Reaktion haben Sie?
Ich meine: Sie sagen, eine Funktion soll etwas tun und als Ergebnis liefern. Aber nicht das System als Ganzes zu ändern.
Aber wenn Daten als wertmäßig trotzdem übergeben werden? Warum macht das so eine große Sache aus Unveränderlichkeit?
Wenn Sie das tatsächliche Objekt an die Funktion übergeben haben, könnte die Funktion das Objekt mutieren (einschließlich Ändern oder Löschen der vorhandenen Eigenschaften und Hinzufügen neuer Objekte). – nnnnnn
Nicht alles wird nach Wert übergeben. – naomik