In diesem Artikel werden hauptsächlich die Speichermethoden von JS-Originalwerten und -Referenzwerten erläutert. Der Originalwert bezieht sich auf den Wert, der den Originaldatentyp darstellt, der auch als Basisdatentyp bezeichnet wird, und auf den Referenzwert bezieht sich auf den Wert des zusammengesetzten Datentyps. Als nächstes werde ich Ihnen anhand von Beispielcode vorstellen, wie Sie Originalwerte und Referenzwerte in JS speichern. Interessierte Freunde sollten einen Blick darauf werfen.
In ECMAscript können Variablen zwei Arten von Werten speichern, nämlich primitive Werte und Referenzwerte
Primitive Werte beziehen sich auf Werte, die darstellen primitive Datentypen, auch Basisdatentypen genannt, einschließlich: Number, Stirng, Boolean, Null, Underfined
Referenzwerte beziehen sich auf Werte zusammengesetzter Datentypen, einschließlich: Object , Funktion, Array, Datum, RegExp
Abhängig von den verschiedenen Datentypen werden einige Variablen im Stapel und andere im Heap gespeichert. Die spezifischen Unterschiede sind wie folgt:
Originalvariablen und ihre Werte werden im Stapel gespeichert. Bei der Übergabe einer Originalvariablen an eine andere Originalvariable wird der Inhalt eines Stapelraums in einen anderen Stapelraum kopiert Dies Die beiden ursprünglichen Variablen haben keinen Einfluss aufeinander.
Der Referenzwert speichert den Namen der Referenzvariablen auf dem Stapel, speichert jedoch ihr tatsächliches Objekt im Heap, und es gibt einen Zeiger, der vom Variablennamen auf das tatsächlich im Heap gespeicherte Objekt zeigt Wenn Sie eine andere Variable angeben, wird ein Referenzobjekt übergeben. Zu diesem Zeitpunkt verweisen beide auf dieselben Daten, wenn der Wert einer Variablen durch eine Methode geändert wird , wird sich auch sein Wert ändern; wenn dies jedoch nicht durch eine Methode, sondern durch eine Neuzuweisung erfolgt, entspricht dies dem erneuten Öffnen eines Raums und der ursprüngliche Zeiger des Werts ändert sich, dann ändert sich der andere Wert nicht.
Sehen Sie sich das Beispiel an:
var a="hello"; var b=a; a="world"; alert(a);//world alert(b);//hello var arr=[1,3]; arr1=arr; arr.push(5); alert(arr)//1,3,5 alert(arr1);//1,3,5 arr=[7,8]; alert(arr);//7,8 alert(arr1);//1,3,5
Verwenden Sie ein Diagramm, um das Ergebnis wie folgt darzustellen:
Die Werte von Die ursprünglichen Variablen beeinflussen sich nicht gegenseitig und die Referenzvariablen arr und arr1 verweisen auf dasselbe Objekt. Wenn also der Wert von arr über eine Methode geändert wird (die Daten im Heap-Raum ändern sich), wenn auf die Daten von arr1 zugegriffen wird, das geänderte Objekt
Wenn der Wert einer Referenzvariablen durch Nichtmethoden geändert wird, wird ein Heap-Raum für die Referenzvariable und den Zeiger neu erstellt ändert sich auch:
Zusammenfassung:
Number, Stirng, Boolean, Null, Underfined und andere Bei grundlegenden Datentypen werden ihre Werte direkt auf dem Stapel gespeichert. Referenztypen wie Objekt, Funktion, Array, Datum und RegExp haben ihre Referenzvariablen im Stapel gespeichert und verweisen auf die tatsächlich gespeicherten Objekte im Heap durch Zeiger
Verwandte Empfehlungen:
JavaScript-Methode valueOf(), die den ursprünglichen Wert eines booleschen Objekts zurückgibtVerstehen von JavaScript-Originalwerten und zusammengesetzten WertenJavaScript Primitive und komplexe Werte_Javascript-TippsDas obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie JS-Originalwerte und Referenzwerte gespeichert werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!