Heim Web-Frontend js-Tutorial Die Beziehung zwischen JavaScript-Variablen, Wertübertragung, Adressübertragung undparameter_jquery

Die Beziehung zwischen JavaScript-Variablen, Wertübertragung, Adressübertragung undparameter_jquery

May 16, 2016 pm 03:48 PM
javascript 传值 参数 变量

Lassen Sie die Ernte zunächst eine Weile trocknen:

1.Javascript-Variablen enthalten zwei Arten von Werten, einer ist ein Referenztypwert und der andere ist ein Basistypwert. Zu den Referenztypen gehören: Array, Objekt, Funktion (es versteht sich, dass nicht-Basistypen Referenztypen sind: undefiniert, null, string, boolean, number

).

2. Der Mechanismus zum Übergeben von Funktionsparametern besteht darin, den Variablenwert zu kopieren.

Im Buch heißt es: „Das Kopieren des Werts außerhalb der Funktion in den Parameter innerhalb der Funktion ist dasselbe wie das Kopieren des Werts von einer Variablen in eine andere. Die Übertragung von Basistypen ist dieselbe wie das Kopieren von Basistypvariablen. und die Übertragung von Referenztypen ist dasselbe wie die Kopie der Referenztypvariablen „

.

" Wenn eine Variable einen Wert eines Referenztyps kopiert, wird auch eine Kopie des im Variablenobjekt gespeicherten Werts in den für die neue Variable zugewiesenen Speicherplatz kopiert. Der Unterschied besteht darin, dass die Kopie des Werts tatsächlich ein Zeiger ist , und dieser Zeiger zeigt auf ein im Heap gespeichertes Objekt. Nach Abschluss des Kopiervorgangs verweisen die beiden Variablen tatsächlich auf dasselbe Objekt. Daher wirkt sich die Änderung einer der Variablen auf die andere Variable aus.

[Hinweis: Das Kopieren des Werts des Referenztyps ist die einzige Möglichkeit, die Adresse zu übergeben]

3. Parameter sind eigentlich lokale Variablen der Funktion.

--------------------------------- --- -----------

Erklärung grundlegender Konzepte:

Wert übertragen: Wert von A auf B übertragen, B ändern, A ändert sich nicht entsprechend, B speichert den gleichen Wert wie A; Adresse übertragen: Übertragen Sie die Adresse von A an B, ändern Sie B und A ändert gleichzeitig nur die Adresse von A (ähnlich einer Computerverknüpfung).


Daten mit Werttyp werden in einer Variablen auf dem Stapel gespeichert. Das heißt, indem Speicherplatz im Stapel zugewiesen und der enthaltene Wert direkt gespeichert wird, stellt der Wert die Daten selbst dar. Werttypdaten haben eine schnellere Zugriffsgeschwindigkeit.

Daten mit einem Referenztyp befinden sich nicht auf dem Stapel, sondern werden im Heap gespeichert. Das heißt, durch die Zuweisung von Speicherplatz im Heap wird der enthaltene Wert nicht direkt gespeichert, sondern es wird auf den zu speichernden Wert verwiesen, und sein Wert stellt die angegebene Adresse dar. Wenn Sie mit einem Referenztyp auf Daten zugreifen, müssen Sie den Inhalt der Variablen auf dem Stapel überprüfen, die auf tatsächliche Daten im Heap verweist. Daten vom Referenztyp haben eine größere Speichergröße und eine geringere Zugriffsgeschwindigkeit als Daten vom Werttyp.

--------------------------------- --- -----------

Hier sind drei Fragen.

[Frage 1]:

Warum wird die Außenwelt nicht gestört, nachdem die Funktion „Änderung(a)“ ausgeführt wurde?

<script>
var a = [1, 2, 3];
function change(a) {
 console.log(a);//[1,2,3]
 a = 2;   //传值
 console.log(a);//2
}
change(a);
console.log(a);  //[1,2,3] 
</script>

Nach dem Login kopieren
Antwort auf Frage 1: Da der Ausführungsprozess von change(a) so abläuft, wird das Objekt a (Array) nach der ersten Übergabe an change in den Parameter a von change kopiert. Dann ist a=2 eine Zuweisungsanweisung und wird zur Wertübergabe. Zu diesem Zeitpunkt ist a=2 ein Werttyp und beinhaltet nicht die Frage der Referenzadresse. Es hat also keinen Einfluss auf die externe a.

[Frage 2]:

Warum wird die Außenwelt gestört, nachdem die Funktion „Änderung(a)“ ausgeführt wurde?

<script>
 var a = [1, 2, 3];
 function change() { 
  a = 2;//传值
 }
 change();
 console.log(a);  //2 
</script>

Nach dem Login kopieren
Antwort auf Frage 2: Beim Ausführen von change() sucht die Funktion in ihrer eigenen Ausführungsumgebung nach der Bereichskette. Das Aktivierungsobjekt enthält nicht die Variable a, daher sucht sie entlang der Bereichskette nach oben, um die globale Ausführung zu finden In der Umgebung wird die Variable a gefunden, sodass zu diesem Zeitpunkt das interne a der Funktion und das externe a dieselbe Adresse im Speicher haben. Wenn sich das interne a der Funktion ändert, ändert sich natürlich auch das externe.

Analyse: Der Unterschied zwischen Frage 2 und Frage 1 besteht darin, dass Frage 2 keine Parameter einführt und daher kein Kopieren von Variablen erfordert.

[Frage 3]:

Warum wird die Außenwelt gestört, nachdem die Funktion „Änderung(a)“ ausgeführt wurde?

<script>
 var a = [1, 2, 3];
 function change(b) { 
  b[0] = 2;
 }
 change(a);
 console.log(a);  //[2,2,3]
</script>

Nach dem Login kopieren
Antwort auf Frage 3: Dies ist sehr ähnlich zu Frage 1. Der einzige Unterschied besteht darin, dass a=2 durch b[0]=2 ersetzt wird. Ich war zuerst verwirrt. Parameter b sollte ein kopierter Wert sein. Wie kann er sich auf die Außenseite von a auswirken?

Tatsächlich ist Parameter b der kopierte Wert von a, wenn die Änderungsfunktion ausgeführt wird. Da a ein Referenztyp ist, greifen b und a innerhalb der Funktion per Referenz auf ein Adressobjekt zu. Das Auftreten von b[0]=2 hat keinen Einfluss auf die Tatsache, dass b und a auf dasselbe Objekt innerhalb der Funktion verweisen.

[Frage 4]:

Warum wird die Außenwelt nicht gestört, nachdem die Funktion „Änderung(a)“ ausgeführt wurde?

 var a = [1, 2, 3];
 function change(b) { 
  console.log(b);//[1,2,3]
  b=2;
  b[0] = 2;
 }
 change(a);
 console.log(a);  //[1,2,3]

Nach dem Login kopieren
Antwort auf Frage 4: Der Ausführungsprozess von Änderung (b) ist wie folgt: Objekt a wird an die Änderungsfunktion übergeben und der Wert und die Adresse werden nach b kopiert. Der Satz b = 2, b wird zu diesem Zeitpunkt zu einem Werttyp und beinhaltet nicht die Frage der Adressreferenz. Der Satz b [0] = 2 ist danach tatsächlich bedeutungslos, da b zu diesem Zeitpunkt kein Array mehr ist. und natürlich gibt es keine Indexierungsmethode wie b[0]. Daher verschwindet die Adressreferenzbeziehung zwischen b und a tatsächlich nach b = 2. Zu diesem Zeitpunkt ist das externe a immer noch [1,2,3];

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Zwei -Punkte -Museum: Alle Exponate und wo man sie finden kann
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

i9-12900H Parameterbewertungsliste i9-12900H Parameterbewertungsliste Feb 23, 2024 am 09:25 AM

Der i9-12900H ist ein 14-Kern-Prozessor und die Threads sind ebenfalls sehr hoch. Einige Parameter wurden verbessert und können den Benutzern ein hervorragendes Erlebnis bieten . Überprüfung der Parameterbewertung des i9-12900H: 1. Der i9-12900H ist ein 14-Kern-Prozessor, der die q1-Architektur und die 24576-KB-Prozesstechnologie übernimmt und auf 20 Threads aktualisiert wurde. 2. Die maximale CPU-Frequenz beträgt 1,80! 5,00 GHz, was hauptsächlich von der Arbeitslast abhängt. 3. Im Vergleich zum Preis ist es sehr gut geeignet. Das Preis-Leistungs-Verhältnis ist sehr gut und für einige Partner, die eine normale Nutzung benötigen, sehr gut geeignet. i9-12900H Parameterbewertung und Leistungsbenchmarks

Was sind Instanzvariablen in Java? Was sind Instanzvariablen in Java? Feb 19, 2024 pm 07:55 PM

Instanzvariablen in Java beziehen sich auf Variablen, die in der Klasse definiert sind, nicht in der Methode oder dem Konstruktor. Instanzvariablen werden auch Mitgliedsvariablen genannt. Jede Instanz einer Klasse verfügt über eine eigene Kopie der Instanzvariablen. Instanzvariablen werden während der Objekterstellung initialisiert und ihr Zustand wird während der gesamten Lebensdauer des Objekts gespeichert und beibehalten. Instanzvariablendefinitionen werden normalerweise an der Spitze der Klasse platziert und können mit einem beliebigen Zugriffsmodifikator deklariert werden, der öffentlich, privat, geschützt oder der Standardzugriffsmodifikator sein kann. Es hängt davon ab, was wir wollen

Sicherheitsüberprüfung des C++-Funktionsparametertyps Sicherheitsüberprüfung des C++-Funktionsparametertyps Apr 19, 2024 pm 12:00 PM

Die Sicherheitsüberprüfung von C++-Parametertypen stellt durch Überprüfungen zur Kompilierungszeit, Laufzeitüberprüfungen und statischen Behauptungen sicher, dass Funktionen nur Werte erwarteter Typen akzeptieren, wodurch unerwartetes Verhalten und Programmabstürze verhindert werden: Typüberprüfung zur Kompilierungszeit: Der Compiler überprüft die Typkompatibilität. Überprüfung des Laufzeittyps: Verwenden Sie Dynamic_cast, um die Typkompatibilität zu überprüfen und eine Ausnahme auszulösen, wenn keine Übereinstimmung vorliegt. Statische Behauptung: Typbedingungen zur Kompilierzeit geltend machen.

Wie erhalte ich Variablen aus der PHP-Methode mit Ajax? Wie erhalte ich Variablen aus der PHP-Methode mit Ajax? Mar 09, 2024 pm 05:36 PM

Die Verwendung von Ajax zum Abrufen von Variablen aus PHP-Methoden ist ein häufiges Szenario in der Webentwicklung. Durch Ajax kann die Seite dynamisch abgerufen werden, ohne dass die Daten aktualisiert werden müssen. In diesem Artikel stellen wir vor, wie man Ajax verwendet, um Variablen aus PHP-Methoden abzurufen, und stellen spezifische Codebeispiele bereit. Zuerst müssen wir eine PHP-Datei schreiben, um die Ajax-Anfrage zu verarbeiten und die erforderlichen Variablen zurückzugeben. Hier ist ein Beispielcode für eine einfache PHP-Datei getData.php:

Mindmap der Python-Syntax: Vertiefendes Verständnis der Codestruktur Mindmap der Python-Syntax: Vertiefendes Verständnis der Codestruktur Feb 21, 2024 am 09:00 AM

Python wird aufgrund seiner einfachen und leicht lesbaren Syntax in einer Vielzahl von Bereichen häufig verwendet. Es ist von entscheidender Bedeutung, die Grundstruktur der Python-Syntax zu beherrschen, um sowohl die Programmiereffizienz zu verbessern als auch ein tiefes Verständnis für die Funktionsweise des Codes zu erlangen. Zu diesem Zweck bietet dieser Artikel eine umfassende Mindmap, die verschiedene Aspekte der Python-Syntax detailliert beschreibt. Variablen und Datentypen Variablen sind Container, die zum Speichern von Daten in Python verwendet werden. Die Mindmap zeigt gängige Python-Datentypen, einschließlich Ganzzahlen, Gleitkommazahlen, Zeichenfolgen, boolesche Werte und Listen. Jeder Datentyp hat seine eigenen Eigenschaften und Betriebsmethoden. Operatoren Operatoren werden verwendet, um verschiedene Operationen an Datentypen auszuführen. Die Mindmap deckt die verschiedenen Operatortypen in Python ab, z. B. arithmetische Operatoren und Verhältnisse

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Tiefes Verständnis von const in der C-Sprache Tiefes Verständnis von const in der C-Sprache Feb 18, 2024 pm 12:56 PM

Ausführliche Erklärung und Codebeispiele von const in C. In der C-Sprache wird das Schlüsselwort const zum Definieren von Konstanten verwendet, was bedeutet, dass der Wert der Variablen während der Programmausführung nicht geändert werden kann. Mit dem Schlüsselwort const können Variablen, Funktionsparameter und Funktionsrückgabewerte geändert werden. Dieser Artikel bietet eine detaillierte Analyse der Verwendung des Schlüsselworts const in der C-Sprache und stellt spezifische Codebeispiele bereit. const modifizierte Variable Wenn const zum Ändern einer Variablen verwendet wird, bedeutet dies, dass die Variable eine schreibgeschützte Variable ist und nicht geändert werden kann, sobald ihr ein Wert zugewiesen wurde. Zum Beispiel: constint

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

See all articles