Heim >Web-Frontend >js-Tutorial >Fünf grundlegende Datentypen in Javascript_Javascript-Kenntnissen
[0] 5 Datentypen:
[0.1]Grundlegende Datentypen: Undefiniert, Null, Boolean, Zahl, String
[0.1.1] Basistypwerte beziehen sich auf einfache Datensegmente. Auf die 5 Basistypen wird über den Wert zugegriffen, da der in der Variablen gespeicherte tatsächliche Wert manipuliert werden kann
[0.1.2] Grundtypwerte belegen eine feste Größe des Speicherplatzes und werden im Stapelspeicher gespeichert. Durch das Kopieren eines Werts eines primitiven Typs von einer Variablen in eine andere wird eine Kopie des Werts erstellt.
[0.1.3] Attribute können nicht zu Basistypwerten hinzugefügt werden
[0.2] Referenzdatentyp: Objekt
[0.2.1] Referenztypwerte beziehen sich auf Objekte, die aus mehreren Werten bestehen können. js erlaubt keinen direkten Zugriff auf den Speicherort im Speicher, dh auf den Speicherplatz des Operationsobjekts kann nicht direkt zugegriffen werden. Wenn Sie ein Objekt manipulieren, manipulieren Sie tatsächlich einen Verweis auf das Objekt und nicht auf das eigentliche Objekt.
Der Wert des Referenztyps kann ein Objekt sein, das im Heap-Speicher gespeichert werden kann. Die Variable, die den Referenztypwert enthält, enthält tatsächlich nicht das Objekt selbst, sondern einen Zeiger auf das Objekt. Durch das Kopieren eines Referenztypwerts von einer Variablen in eine andere wird tatsächlich ein Zeiger kopiert, sodass beide Variablen letztendlich auf dasselbe Objekt verweisen.
[0.2.3] Für Referenztypwerte können Sie Attribute und Methoden hinzufügen und auch deren Attribute und Methoden ändern und löschen
[1]Undefiniert
[1.1] Der Typ „Undefiniert“ hat nur einen Wert, der undefiniert ist
[1.2]var a 96b4fef55684b9312718d5de63fb7121 var a = undefiniert;
[1.3] Für Variablen, die nicht deklariert wurden, können Sie nur eine Operation ausführen, nämlich den Operator „typeof“ verwenden, um seinen Datentyp zu erkennen [im strikten Modus führt dies jedoch zu einem Fehler][1.4] Auftrittsszene:
. [1.4 .1] Deklarierte nicht zugewiesene Variable
Rufen Sie die nicht vorhandenen Attribute des Objekts ab
[1.4.3] Ausführungsergebnisse von Funktionen ohne Rückgabewerte
[1.4.4] Die Parameter der Funktion werden nicht in
übergeben
[1.4.5]void(expression)[1.5]Typkonvertierung
Boolean(undefiniert):false
Zahl (undefiniert): NaN
String(undefiniert):'undefiniert'
[2]Null
[2.1] Der Nulltyp hat nur einen Wert, nämlich null. Aus logischer Sicht stellt der Nullwert einen Nullobjektzeiger dar[2.2] Wenn die definierte Variable zum Speichern des Objekts verwendet wird, ist es am besten, die Variable auf Null zu initialisieren
[2.3] Tatsächlich wird der undefinierte Wert vom Nullwert abgeleitet, also undefiniert == null
[2.4] Auftretensszenario: Wenn das Objekt nicht existiert
[2.5]Typkonvertierung
Boolean(null):false
Zahl(null):0
String(null):'null'
[Hinweis 1] null ist ein Nullobjektzeiger, [] ist ein leeres Array, {} ist ein leeres Objekt, die drei sind unterschiedlich
[Hinweis 2]null kann keine benutzerdefinierten Attribute hinzufügen
[3]Boolean
[3.1] Der boolesche Typ hat nur zwei Werte: wahr und falsch[3.2] Auftrittsszene:
[3.2.1] Bedingte Anweisungen bewirken, dass das System eine Hermit-Typkonvertierung durchführt
[3.2.2]Literal- oder Variablendefinition
[3.3]Typkonvertierung
Zahl (wahr): 1 ||. Zahl (falsch): 0
String(true):'true' ||. String(false):'false'
[3.4]Boolean()
Boolean(undefiniert):false
Boolean(null):false
Boolean (nicht leere Objekte umfassen leere Arrays [] und leere Objekte {}): true
Boolean(non-0): true || Boolean(0 and NaN):false
Boolean (nicht leere Zeichenfolge einschließlich Leerzeichen):true || Boolean(''):false
[Hinweis] true ist nicht unbedingt gleich 1 und false ist nicht unbedingt gleich 0
[4]Nummer[4.1] Der Zahlentyp verwendet das IEEE754-Format zur Darstellung von Ganzzahlen und Gleitkommawerten
[Hinweis] Sie können einen Wert von -0 verwenden, um ihn in eine Zahl umzuwandeln
[4.2] Die drei Literalformate sind dezimal, oktal und hexadezimal
Die erste Ziffer muss 0 sein, gefolgt von der oktalen Ziffernfolge (0-7). Wenn der Wert im Literalwert den Bereich überschreitet, wird die führende 0 ignoriert und die folgenden Werte als Dezimalzahl analysiert
[4.2.2] Oktalliterale sind im strikten Modus ungültig und führen dazu, dass js einen Fehler auslöst
[4.2.3] Die ersten beiden Ziffern des hexadezimalen Literalwerts müssen 0x sein, gefolgt von einer Folge hexadezimaler Ziffern, und die Buchstaben können Groß- oder Kleinbuchstaben sein
Der Wert im Literalwert im Hexadezimalsystem liegt außerhalb des Bereichs. Es wird ein Fehler gemeldet
[4.2.5] Bei der Durchführung arithmetischer Berechnungen werden alle in Oktal- und Hexadezimalzahl ausgedrückten Werte schließlich in Dezimalwerte umgewandelt
[4.3] Numerische Darstellung:
[4.3.1] Positive 0 und negative 0 können in js gespeichert werden und gelten als gleich
[4.3.2] Gleitkommawert: Der Wert muss einen Dezimalpunkt enthalten und es muss mindestens eine Ziffer nach dem Dezimalpunkt stehen.
[4.3.2.1] Da Gleitkommawerte zum Speichern ganzzahliger Werte doppelt so viel Speicherplatz benötigen, konvertiert js die Gleitkommawerte in ganzzahlige Werte, ohne dass eine Zahl verloren geht oder Gleitkommawert nach dem Dezimalpunkt. Es stellt eine Ganzzahl dar und dieser Wert wird als Ganzzahlwert gespeichert.
[4.3.2.2] Die höchste Genauigkeit von Gleitkommawerten beträgt 17 Dezimalstellen
[4.3.2.3] Für sehr große oder sehr kleine Zahlen können sie durch Gleitkommawerte in der wissenschaftlichen Notation e dargestellt werden
[4.3.2.4] Standardmäßig konvertiert js Gleitkommawerte mit mehr als 6 Nullen nach dem Komma in Werte, die in der E-Notation ausgedrückt werden
[4.3.2.5] Ein häufiges Problem bei Gleitkommaberechnungen basierend auf IEEE754-Zahlenwerten ist das Problem der Runde ing-Fehler. Zum Beispiel: 0,1 0,2 === 0,3(15 0)4
[4.3.3] Der numerische Bereich in js ist Number.MIN_VALUE(5e-324) —— Number.MAX_VALUE(1.7976931348623157e 308)
negative Unendlichkeit) wird ausgegeben
[4.3.3.2] – Infinity kann nicht an numerischen Berechnungen teilnehmen
[4.3.3.3] number.max_value 1! = Unendlich, da der Computer höchstens 52-Bit-Digitalziffern speichert, können nicht mehr als 1.000 gespeichert werden, und die Genauigkeit, d. h. die Dezimalzahl, ist längst verloren gegangen Position ist alles 0, daher bleibt die Addition unverändert >
[4.3.3.4]Number.MIN_VALUE - 1 != -Unendlich, der gleiche Grund, also ist das Ergebnis -1[4.3.3.5] Sie können isFinite() verwenden, um zu bestimmen, ob ein Wert endlich ist, einschließlich der impliziten Typkonvertierung Number()
[4.3.3.6]isFinite(NaN) //false
[4.3.4]NaN
[4.3.4.1]NaN entspricht keinem Wert, einschließlich NaN selbst
[4.3.4.2] Jede Operation mit NaN gibt NaN zurück
[4.3.4.3] isNaN(), um zu bestimmen, ob die Zahl NaN ist, einschließlich der impliziten Typkonvertierung Number()
[4.4] Numerische Konvertierung: Number() kann für jeden Typ verwendet werden, parseInt() und parseFloat werden speziell zum Konvertieren von Zeichenfolgen in Zahlen verwendet
[Hinweis 1]Number(), parseInt() und parseFloat() können Zahlen in verschiedenen Basen akzeptieren, sind jedoch nicht auf Zeichenfolgen anwendbar, die Zahlen enthalten
[Hinweis 2] Wenn die Zahl in Number(), parseInt(), parseFloat() 1,2 ist, wird ein Fehler gemeldet, aber wenn die Zeichenfolge „1.2.“ ist, wird kein Fehler gemeldet
[4.4.1]Nummer()
Zahl(wahr):1 ||. Zahl(falsch):0
Zahl (Zahlen in verschiedenen Basen): Die Dezimalzahl nach der Operation, z. B. 1,0 oder 1. oder 01, wird als 1 ausgegeben
Zahl (undefiniert): NaN
Zahl(null):0
Zahl (Zeichenfolge):
Zahl (eine Zeichenfolge, die nur Dezimal- und Hexadezimalzahlen enthält): Dezimalzahl nach der Operation
[Hinweis] Der Acht-Proof wird in der Zeichenfolge nicht erkannt und die Dezimalzahl wird verarbeitet
Zahl('' und ''):0
Zahl (String in anderen Fällen): NaN
Nummer (Objekt):
Zahl([] und [0] und [-0]):0
Nummer([Nummer]): Nummer nach der Operation
Number([1,2] und {} und andere Objekte):NaN
[4.4.2] parseInt(): Beim Konvertieren einer Zeichenfolge werden Leerzeichen vor der Zeichenfolge ignoriert, bis das erste Nicht-Leerzeichen gefunden wird. Wenn das erste Zeichen kein numerisches Zeichen oder ein negatives Vorzeichen ist, gibt parseInt() NaN zurück. Wenn dies der Fall ist, wird die Analyse fortgesetzt, bis die Analyse abgeschlossen ist oder ein nicht numerisches Zeichen gefunden wird.
[4.4.2.1] parseInt() kann Ganzzahlen verschiedener Basen identifizieren, aber beim Parsen oktaler Literalzeichenfolgen analysiert ECMAScript3 Oktalzahlen, ECMAScript5 verfügt jedoch nicht über die Fähigkeit, Oktalzahlen zu analysieren
[4.4.2.2] Die Funktion parseInt() stellt einen zweiten Parameter bereit, der die Basiszahl angibt, wie zum Beispiel: parseInt('123', 16 oder 10 oder 2)
[4.4.2.3] parseInt (Zahlen in verschiedenen Basen): Dezimalzahlen nach der Operation, z. B. 1,0 oder 1. oder 01, werden als 1 ausgegeben
Da parseInt() speziell zum Verarbeiten von Zeichenfolgenkonvertierungszahlen verwendet wird, ist parseInt (andere Typen umfassen '')//NaN
[4.4.3] parseFloat(): Ähnlich wie parseInt() ignoriert es Leerzeichen vor der Zeichenfolge, bis das erste Nicht-Leerzeichen
gefunden wird[4.4.3.1] parseFloat() kann nur Dezimalzeichenfolgen analysieren
[4.4.3.2] parseFloat (Zahlen in verschiedenen Basen): Dezimalzahlen nach der Operation, z. B. 1,0 oder 1. oder 01 werden als 1 ausgegeben
[5]String: Eine in einfache oder doppelte Anführungszeichen eingeschlossene Zeichenfolge. Die Länge einer beliebigen Zeichenfolge kann durch Zugriff auf das Längenattribut
ermittelt werden[5.1] Zeichenliteral, auch Escape-Sequenz genannt
n Zeilenumbruch
t Tabellierung
b Leerzeichen
r Geben Sie
einf Papier einführen
\ Schrägstrich
' Einfaches Anführungszeichen
„ Doppelte Anführungszeichen
xnn stellt ein Zeichen im Hexadezimalformat nn dar (n ist 0-f), z. B. x41 steht für „A“
unnnn stellt ein Unicode-Zeichen im Hexadezimalformat nnnn dar (n ist 0-f), beispielsweise stellt u03a3 das griechische Zeichen ε dar
[5.2] Zeichenfolgen in ECMAScript sind unveränderlich
[5.3] Die Zeichenfolgenverkettung erfordert zunächst die Erstellung einer neuen Zeichenfolge, das anschließende Füllen der neuen Zeichenfolge mit zwei Zeichenfolgen, die gespleißt werden müssen, und schließlich die Zerstörung der ursprünglichen Zeichenfolge. Dieser Prozess findet im Hintergrund statt und ist auch der Grund dafür, dass das String-Spleißen in einigen älteren Browsern (IE6) langsam ist, aber dieses Ineffizienzproblem wurde inzwischen gelöst
[5.4] String-Konvertierung
[5.4.1]toString()
Null und Undefiniert verfügen nicht über diese Methode
Boolean, Object und String haben diese Methode
Zahl Verwenden Sie diese Methode, um Basiszahlen 2, 8, 10, 16 zu übergeben, z. B. var num = 10;num.toString(2);//1010
Aber 10.toString(2) meldet einen Fehler, da auf die Zahl nicht der Bezeichner
folgen kann[5.4.2]String()
Es gibt die toString()-Methode, verwenden Sie die toString()-Methode
String(null);//'null'
String(undefiniert);//'undefiniert'
[5.4.3] Um einen Wert in eine Zeichenfolge umzuwandeln, können Sie den Plus-Operator verwenden, um ihn zu einer leeren Zeichenfolge hinzuzufügen ''
[5.4.4] Wenn der Wert eines Elements im Array null oder undefiniert ist, ist der Wert eine leere Zeichenfolge in den Ergebnissen, die von join(), toLocaleString(), toString() und valueOf( zurückgegeben werden. ) Methoden
Abschließend gebe ich Ihnen ein einfaches Beispiel, um die Unterschiede zwischen diesen fünf Grundtypen zu veranschaulichen
var testString = "Hello"; var testBoobean = true; var testUndefined = undefined; var testUndefined1; var testNull = null; var testObject = {a:1}; var testFunction = function(){return;}; alert(testString);//"string" alert(testBoobean);//"boolean" alert(testUndefined);//"undefined" alert(testUndefined1);//"undefined" alert(testUndefined2);//"undefined" alert(testNull);//"object" alert(testObject);//"object" alert(testFunction);//"function"