Ich bin ehrlich gesagt nicht ganz sicher, welche Art von Antwort Sie erwarten, da ich nicht ganz verstehe, worüber Sie verwirrt sind. Aber hier gehen wir:
Hätten wir 100 mal eine neue Referenz in der folgenden Schleife?
Variablen sind nur Container für Werte. Auf einer niedrigen Ebene ist eine Variable im Grunde nur eine Bezeichnung für eine Speicheradresse oder ein Register. Z.B. Variable x
könnte auf Register R1
zeigen.
x++
würde einfach die Zahl erhöhen, die in diesem Register von 1
gespeichert wird. Nehmen wir an, unser Register sah wie folgt aus:
R1: 5
Nach dem Erhöhen, die eine einzelne Operation sein kann, wie ADD R1 1
, würden wir
R1: 6
bekommen D.h. Wir überschreiben einfach den vorherigen Wert mit einem neuen Wert. Und wir machen das mehrfach.
Ist das leistungsfähig? Ich denke, ich sehe nicht richtig.
Das Erhöhen einer Zahl um eins ist so einfach wie möglich.
Sicher, könnten Sie änderbare Zahlen auf einer höheren Ebene implementieren, aber es würde sicherlich nicht die Dinge effizienter oder einfacher machen.
Für "Einzelwert" -Werte ist die Mutabilität nicht sehr sinnvoll, da das Mutieren eines solchen Wertes grundsätzlich bedeutet, dass er durch einen anderen Wert "in Place" ersetzt wird.
Änderbarkeit ist sinnvoller für Werte, die aus anderen Werten wie Listen und Wörterbüchern bestehen, wobei sich ein Teil ändert und der andere unverändert bleibt.
Außerdem scheint die Änderbarkeit nur relevant zu sein, wenn eine Sprache Referenztypen Datentypen hat. Damit meine ich, dass mehrere Variablen einen Verweis auf den gleichen Wert eines Datentyps enthalten können. Objekte sind Referenz-Typ in JavaScript, die Sie dies tun kann:
var a = {foo: 42};
var b = a;
b.foo = 21;
console.log(a);
Wenn Datentypen sind nicht von einem Referenztyp, die so genannten Value-Typ, (die primitiven Werte sind in JavaScript), dann ist die Veränderlichkeit nicht von Bedeutung, da sie von der Unveränderlichkeit nicht zu unterscheiden wäre. Betrachten Sie das folgende hypothetische Szenario mit einer wandelbaren, Wert-Typ-Nummer:
var a = MutableNumber(42);
var b = a; // creates a copy of MutableNumber(42) because it's a value type
a.add(1);
console.log(a, b); // would log 43, 42
In diesem Szenario ist es nicht möglich, dass zwei Variablen auf die gleiche veränderbare Zahlenwert zu verweisen, ist a.add(1)
nicht von einem neuen Wert zu a
zuweisen (dh a = a + 1
).
Was würde es bedeuten, wenn die Zahl 5 veränderbar wäre? – Pointy
Lesen Sie die Antwort in der Frage, die Sie verknüpft haben: Die Zahlen selbst sind unveränderlich (oder Sie könnten Konstanten sagen). Die Variable x ist eine Referenz auf eine Zahl/Konstante. Dort steht auch, dass es in allen Programmiersprachen gleich ist. Sonst könnten Sie Zahlen entfernen/überschreiben und die ganze Mathematik/Berechnungen, die die Sprache machen kann, vermasseln. Recht? –
Mmm aber wenn die Zahl etwas Konstanten sind, warum können wir sie Werte wieder aktivieren? x = 5 dann x = 1. – Jamo