ECMAScript-Variablen können Werte von zwei verschiedenen Datentypen enthalten: Werte vom primitiven Typ und Werte vom Referenztyp. Primitive Typwerte beziehen sich auf einfache Datensegmente, während sich Referenztypwerte auf Objekte beziehen, die aus mehreren Werten bestehen können.
5 grundlegende Datentypen: Undefiniert, Null, Boolean, Zahl und String. Auf diese 5 grundlegenden Datentypen wird über den Wert zugegriffen, da der in der Variablen gespeicherte tatsächliche Wert manipuliert werden kann. ES6 verfügt über einen weiteren Symboltyp.
Der Wert des Referenztyps ist ein im Speicher gespeichertes Objekt. JavaScript ermöglicht keinen direkten Zugriff auf den Speicherort im Speicher, was bedeutet, dass der Speicherplatz des Objekts nicht direkt manipuliert werden kann. Wenn Sie ein Objekt manipulieren, manipulieren Sie tatsächlich einen Verweis auf das Objekt und nicht auf das eigentliche Objekt. Zu diesem Zweck wird per Referenz auf Werte von Referenztypen zugegriffen.
【Variablenwert kopieren】Durch das Kopieren des Werts einer Basistypvariable wird ein neuer Wert auf dem Variablenobjekt erstellt und der Wert dann nach kopiert Der Ort, an dem die neue Variable zugewiesen wird. Operationen an beliebigen Variablenwerten beeinflussen sich gegenseitig nicht.
[Referenzzeiger kopieren] Durch das Kopieren des Werts einer Referenztypvariablen wird auch der im Variablenobjekt gespeicherte Wert in den von der neuen Variablen zugewiesenen Speicherplatz kopiert. Der Unterschied besteht darin, dass er kopiert wird Der Wert ist eigentlich ein Zeiger auf ein im Heap gespeichertes Objekt. Nach dem Kopieren verweisen beide Variablen tatsächlich auf dasselbe Objekt. Daher wirkt sich die Änderung einer Variablen auf eine andere Variable aus.
Alle Funktionsparameter in ECMAScript werden als Wert übergeben. Es gibt zwei Möglichkeiten, auf Variablen zuzugreifen: per Wert und per Referenz, während Parameter nur per Wert übergeben werden können.
Übergabe grundlegender Typparameter: Was an die Funktion übergeben wird, ist eine Kopie des Werts, und Änderungen daran in der Funktion sind von außen nicht sichtbar.
var a = 1; var b = 2; function change(a, b) { var c = a; a = b; b = c; console.log(a); //2 console.log(b); //1 } change(a, b); console.log(a); //1 console.log(b); //2
Parameterübergabe vom Referenztyp: Was an die Funktion übergeben wird, ist ein Verweis auf den Wert, und die Änderung seiner Eigenschaften in der Funktion ist sichtbar extern, verwendet aber eine neue Referenz. Das Überschreiben ist extern nicht sichtbar.
var a = [1, 2, 3]; var b = [5, 6]; function change(a,b) { a[0] = 4; //对其属性的修改外部可见 var c = a; a = b; //用新引用覆盖 b = c; console.log(a); //"5,6" console.log(b); //"4,2,3" } change(a,b); console.log(a); //"4,2,3" console.log(b); //"5,6"
a und b sind Variablen in der Änderungsfunktion. Beim Aufruf der Funktion werden die Referenzen von a und b angezeigt werden diesen beiden Variablen zugewiesen, können aber a und b in der globalen Welt nicht ändern. Denn das Überschreiben mit einer neuen Referenz ist nach außen nicht sichtbar, da die Funktion nur die Referenz erhält und keine Macht hat, die Referenz zu ändern.
var a = [1, 2, 3]; var b = [5, 6]; function change() { var c = a; a[0] = 4; //对其属性的修改外部可见 a = b; //用新引用覆盖 b = c; } change(a,b); console.log(a); //"5,6" console.log(b); //"4,2,3"
Da js keinen Bereich auf Blockebene hat, kann es die Variable a in der Änderung nicht finden, und b geht bewusst zur oberen Ebene, um sie zu finden, daher sind a und b hier Verweise auf global Variablen.
☞☞☞Tiefer Einblick in die JavaScript-Reihe☜☜☜
ECMAScript-Variablen können Werte von zwei verschiedenen Datentypen enthalten: Basistypwerte und Referenztypwerte. Primitive Typwerte beziehen sich auf einfache Datensegmente, während sich Referenztypwerte auf Objekte beziehen, die aus mehreren Werten bestehen können.
5 grundlegende Datentypen: Undefiniert, Null, Boolean, Zahl und String. Auf diese 5 grundlegenden Datentypen wird über den Wert zugegriffen, da der in der Variablen gespeicherte tatsächliche Wert manipuliert werden kann. ES6 verfügt über einen weiteren Symboltyp.
Der Wert des Referenztyps ist ein im Speicher gespeichertes Objekt. JavaScript ermöglicht keinen direkten Zugriff auf den Speicherort im Speicher, was bedeutet, dass der Speicherplatz des Objekts nicht direkt manipuliert werden kann. Wenn Sie ein Objekt manipulieren, manipulieren Sie tatsächlich einen Verweis auf das Objekt und nicht auf das eigentliche Objekt. Zu diesem Zweck wird per Referenz auf Werte von Referenztypen zugegriffen.
【Variablenwert kopieren】Durch das Kopieren des Werts einer Basistypvariable wird ein neuer Wert auf dem Variablenobjekt erstellt und der Wert dann nach kopiert Der Ort, an dem die neue Variable zugewiesen wird. Operationen an beliebigen Variablenwerten beeinflussen sich gegenseitig nicht.
[Referenzzeiger kopieren] Durch das Kopieren des Werts einer Referenztypvariablen wird auch der im Variablenobjekt gespeicherte Wert in den von der neuen Variablen zugewiesenen Speicherplatz kopiert. Der Unterschied besteht darin, dass er kopiert wird Der Wert ist eigentlich ein Zeiger auf ein im Heap gespeichertes Objekt. Nach dem Kopieren verweisen beide Variablen tatsächlich auf dasselbe Objekt. Daher wirkt sich die Änderung einer Variablen auf eine andere Variable aus.
Alle Funktionsparameter in ECMAScript werden als Wert übergeben. Es gibt zwei Möglichkeiten, auf Variablen zuzugreifen: per Wert und per Referenz, während Parameter nur per Wert übergeben werden können.
Übergabe grundlegender Typparameter: Was an die Funktion übergeben wird, ist eine Kopie des Werts, und Änderungen daran in der Funktion sind nach außen nicht sichtbar.
var a = 1; var b = 2; function change(a, b) { var c = a; a = b; b = c; console.log(a); //2 console.log(b); //1 } change(a, b); console.log(a); //1 console.log(b); //2
Referenztyp-Parameterübergabe: Was an die Funktion übergeben wird, ist eine Referenz auf den Wert. Die Änderung seiner Eigenschaften in der Funktion ist von außen sichtbar, aber überschreibend es mit einer neuen Referenz wird von außen unsichtbar
var a = [1, 2, 3]; var b = [5, 6]; function change(a,b) { a[0] = 4; //对其属性的修改外部可见 var c = a; a = b; //用新引用覆盖 b = c; console.log(a); //"5,6" console.log(b); //"4,2,3" } change(a,b); console.log(a); //"4,2,3" console.log(b); //"5,6"
a, b sind Variablen in der Änderungsfunktion. Beim Aufruf der Funktion werden die Referenzen von a und b diesen beiden Variablen zugewiesen , aber das sind sie nicht. Sie können a und b nicht global ändern. Denn das Überschreiben mit einer neuen Referenz ist nach außen nicht sichtbar, da die Funktion nur die Referenz erhält und keine Macht hat, die Referenz zu ändern.
var a = [1, 2, 3]; var b = [5, 6]; function change() { var c = a; a[0] = 4; //对其属性的修改外部可见 a = b; //用新引用覆盖 b = c; } change(a,b); console.log(a); //"5,6" console.log(b); //"4,2,3"
Da js keinen Bereich auf Blockebene hat, kann es die Variable a in der Änderung nicht finden, und b geht bewusst zur oberen Ebene, um sie zu finden, daher sind a und b hier Verweise auf global Variablen.
Das obige ist der detaillierte Inhalt vonJs-Parameterübergabe und Variablenkopieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!