Inhaltsverzeichnis
Grundtypen und Referenztypen
Zusammenfassung
Unterschiedliche Speicherzuweisungen beim Deklarieren von Variablen:
Unterschiedliche Speicherzuweisungsmechanismen bringen auch unterschiedliche Zugriffsmechanismen mit sich
Unterschiede beim Kopieren von Variablen
Unterschiede bei der Parameterübergabe (dem Prozess des Kopierens tatsächlicher Parameter in formale Parameter)
Heim Web-Frontend js-Tutorial Über den Unterschied zwischen Basisdatentypen und Referenzdatentypen in js

Über den Unterschied zwischen Basisdatentypen und Referenzdatentypen in js

Oct 24, 2017 am 09:20 AM
javascript 引用 类型

Stapel und Heap
Der Stapel ist ein automatisch zugewiesener Speicherplatz, der vom System automatisch freigegeben wird, während der Heap dynamisch Speicher zugewiesen wird. Seine Größe ist variabel und wird nicht automatisch freigegeben.

Grundtypen und Referenztypen

Grundtypen: Einfache Datensegmente werden im Stapelspeicher gespeichert, die Datengröße wird bestimmt und die Speicherplatzgröße kann zugewiesen werden.

Zu den grundlegenden Datentypen gehören Undefiniert, Null, Boolean, Zahl und String. Ihre Werte werden direkt auf dem Stapel gespeichert.

Referenztyp: der Wert des im Heapspeicher gespeicherten Objekts , dargestellt durch Der Adresszeiger besteht aus einem Wert. Die Adresse wird im Stapel gespeichert, und der tatsächliche Wert wird im Heap gespeichert. Die Größe jedes Speicherplatzes im Heap ist unterschiedlich und es werden je nach Situation spezifische Zuweisungen vorgenommen . Wenn wir auf den Wert eines Referenztyps (z. B. eines Objekts, Arrays, einer Funktion usw.) zugreifen müssen, erhalten wir zuerst den Adresszeiger des Objekts vom Stapel und dann die erforderlichen Daten aus dem Heap-Speicher


 var s='str',t= 0,floatNum=1.1;
    var obj={
        a:10,
        b:'Joel',
        c:function(){
            console.log('function');
        }
    }
Nach dem Login kopieren

js 基本数据类型引用数据类型内存分配

Wie oben gezeigt:

Grundlegende Datentypwerte werden im Stapel und im Objekt gespeichert Referenzen von Referenztypen werden im Stapel gespeichert.

Zusammenfassung

Unterschiedliche Speicherzuweisungen beim Deklarieren von Variablen:

Grundtypen: einfache Daten Segmente werden im Stapel gespeichert. Der Wert wird direkt an der Stelle gespeichert, an der auf die Variable zugegriffen wird. Dies liegt daran, dass der von Basistypen belegte Platz fest ist, sodass sie in einem kleineren Speicherbereich – dem Stapel – gespeichert werden können, sodass der Wert der Variablen schnell abgefragt werden kann.

Referenztyp: Im Heap gespeicherter Wert ist ein Zeiger (Punkt), der auf die Speicheradresse des gespeicherten Objekts zeigt ändern, sodass sie nicht auf dem Stapel platziert werden kann, da sonst die Geschwindigkeit der Variablensuche verringert wird. Im Gegensatz dazu ist der auf dem Stapel gespeicherte Wert die Adresse des Objekts und die Größe der Adresse ist fest, sodass das Speichern auf dem Stapel keinen Einfluss auf die Variablenleistung hat.

Unterschiedliche Speicherzuweisungsmechanismen bringen auch unterschiedliche Zugriffsmechanismen mit sich

In Javascript ist der direkte Zugriff auf im Heapspeicher gespeicherte Objekte nicht zulässig. Wenn Sie also auf ein Objekt zugreifen, greifen Sie zuerst auf den Speicherstapel zu, um das zu erhalten Adresse des Objekts im Speicherheap und dann dieser Adresse folgen, um den Wert im Objekt zu erhalten. Dies ist der legendäre Zugriff durch Referenz, während sich der Wert des Basistyps direkt im Speicherstapel befindet.

Unterschiede beim Kopieren von Variablen

Grundtypen: Wenn eine Variable, die den Originalwert enthält, in eine andere Variable kopiert wird, wird der neuen Variablen eine Kopie des Originalwerts zugewiesen zwei Die Variablen sind völlig unabhängig, sie haben nur den gleichen Wert.

Referenztyp: Wenn eine Variable, die die Speicheradresse eines Objekts enthält, in eine andere Variable kopiert wird, wird die Speicheradresse der neuen Variablen zugewiesen, was bedeutet, dass beide Variablen auf den Heap-Speicher verweisen -Objekt werden die von beiden vorgenommenen Änderungen im anderen widergespiegelt. (Hier muss man verstehen, dass beim Kopieren eines Objekts kein identisches Objekt im Heap-Speicher erstellt wird, sondern nur eine weitere Variable vorhanden ist, die den Zeiger auf das Objekt enthält.) Es gibt einen weiteren Zeiger.

Unterschiede bei der Parameterübergabe (dem Prozess des Kopierens tatsächlicher Parameter in formale Parameter)

Die Parameter aller Funktionen in ECMAScript werden als Wert übergeben, aber warum sind primitive Typen und Referenztypen beteiligt? Gibt es immer noch einen Unterschied, wenn der Wert von ? Das liegt nicht nur an der unterschiedlichen Speicherzuordnung.
Grundlegender Datentyp: Erstellen Sie einfach eine Kopie des Werts in der Variablen und übergeben Sie ihn an den Parameter. Danach haben der Parameter und die Variable keinen Einfluss mehr aufeinander.
Referenztyp: Da es sich bei dem übergebenen Wert um eine Speicheradresse handelt, verweisen sie alle auf dasselbe Objekt

Das obige ist der detaillierte Inhalt vonÜber den Unterschied zwischen Basisdatentypen und Referenzdatentypen in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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)

So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

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

Wie erstelle ich ein Videomatrix-Konto? Welche Arten von Matrixkonten gibt es? Wie erstelle ich ein Videomatrix-Konto? Welche Arten von Matrixkonten gibt es? Mar 21, 2024 pm 04:57 PM

Mit der Beliebtheit von Kurzvideoplattformen ist Video-Matrix-Account-Marketing zu einer aufstrebenden Marketingmethode geworden. Durch die Erstellung und Verwaltung mehrerer Konten auf verschiedenen Plattformen können Unternehmen und Einzelpersonen Ziele wie Markenwerbung, Fanwachstum und Produktverkäufe erreichen. In diesem Artikel wird erläutert, wie Sie Video-Matrix-Konten effektiv nutzen und verschiedene Arten von Video-Matrix-Konten vorgestellt. 1. Wie erstelle ich ein Videomatrix-Konto? Um ein gutes Video-Matrix-Konto zu erstellen, müssen Sie die folgenden Schritte befolgen: Zunächst müssen Sie klären, was das Ziel Ihres Video-Matrix-Kontos ist, sei es für die Markenkommunikation, das Fanwachstum oder den Produktverkauf. Klare Ziele helfen dabei, entsprechende Strategien zu entwickeln. 2. Wählen Sie eine Plattform: Wählen Sie eine geeignete Kurzvideoplattform basierend auf Ihrer Zielgruppe. Zu den aktuellen Mainstream-Kurzvideoplattformen gehören Douyin, Kuaishou, Huoshan Video usw.

Welche Vorteile haben C++-Funktionen, die Referenztypen zurückgeben? Welche Vorteile haben C++-Funktionen, die Referenztypen zurückgeben? Apr 20, 2024 pm 09:12 PM

Zu den Vorteilen von Funktionen, die Referenztypen in C++ zurückgeben, gehören: Leistungsverbesserungen: Durch die Übergabe als Referenz wird das Kopieren von Objekten vermieden, wodurch Speicher und Zeit gespart werden. Direkte Änderung: Der Aufrufer kann das zurückgegebene Referenzobjekt direkt ändern, ohne es neu zuzuweisen. Einfachheit des Codes: Die Übergabe als Referenz vereinfacht den Code und erfordert keine zusätzlichen Zuweisungsvorgänge.

Wie verwende ich C++-Referenz- und Zeigerparameterübergabe? Wie verwende ich C++-Referenz- und Zeigerparameterübergabe? Apr 12, 2024 pm 10:21 PM

Referenzen und Zeiger sind in C++ beide Methoden zur Übergabe von Funktionsparametern, es gibt jedoch Unterschiede. Eine Referenz ist ein Alias ​​für eine Variable. Durch Ändern der Referenz wird die ursprüngliche Variable geändert, während der Zeiger die Adresse der Variablen speichert. Wenn Sie sich für die Verwendung einer Referenz oder eines Zeigers entscheiden, müssen Sie Faktoren berücksichtigen, z. B. ob die ursprüngliche Variable geändert werden muss, ob ein Nullwert übergeben werden muss, und Leistungsaspekte.

Was ist die Art des Rückgabewerts der Golang-Funktion? Was ist die Art des Rückgabewerts der Golang-Funktion? Apr 13, 2024 pm 05:42 PM

Go-Funktionen können mehrere Werte unterschiedlichen Typs zurückgeben. Der Rückgabewerttyp wird in der Funktionssignatur angegeben und über die Return-Anweisung zurückgegeben. Beispielsweise kann eine Funktion eine Ganzzahl und einen String zurückgeben: funcgetDetails()(int,string). In der Praxis kann eine Funktion, die die Fläche eines Kreises berechnet, die Fläche und einen optionalen Fehler zurückgeben: funccircleArea(radiusfloat64)(float64,error). Hinweis: Wenn die Funktionssignatur keinen Typ angibt, wird ein Nullwert zurückgegeben. Zur Verbesserung der Lesbarkeit wird empfohlen, eine Return-Anweisung mit einer expliziten Typdeklaration zu verwenden.

See all articles