Heim > Artikel > Web-Frontend > JavaScript-Datentypen
Datentypen
Es gibt 5 einfache Datentypen (auch Basisdatentypen genannt) in JavaScript: Undefiniert, Null, Boolean, Zahl und String. Es gibt auch einen komplexen Datentyp – Objekt. Objekt besteht im Wesentlichen aus einer Menge ungeordneter Name-Wert-Paare.
Typeof-Operator
Da JavaScript lose typisiert ist, muss es eine Möglichkeit geben, den Datentyp einer bestimmten Variablen zu erkennen – typeof ist der Operator, der für die Bereitstellung von Informationen auf Anbieterseite verantwortlich ist. Die Verwendung des Operators „typeof“ für einen Wert kann eine der folgenden Zeichenfolgen zurückgeben:
● „undefiniert“ – wenn der Wert undefiniert ist;
● „boolean“ – wenn der Wert ein boolescher Wert ist;
● „Zeichenfolge“ – wenn der Wert eine Zeichenfolge ist;
● „Zahl“ – wenn der Wert ein numerischer Wert ist; dieser Wert ist ein Objekt oder null; speziell undefiniert. Wenn eine Variable mit var deklariert, aber nicht initialisiert wird, ist der Wert der Variablen undefiniert, zum Beispiel:
var message;
warning(message == undefiniert) //trueNull-Typ
Der Null-Typ ist der zweite Datentyp mit nur einem Wert, und dieser spezielle Wert ist null. Aus logischer Sicht stellt der Nullwert einen Nullobjektzeiger dar, und aus diesem Grund wird „object“ zurückgegeben, wenn der Operator „typeof“ zum Erkennen von Null verwendet wird, zum Beispiel:
var car = null;
warning(typeof car); // "object"
Wenn die definierte Variable in Zukunft zum Speichern eines Objekts verwendet werden soll, ist es am besten, die Variable auf Null statt auf zu initialisieren ein anderer Wert. Auf diese Weise können Sie feststellen, ob die entsprechende Variable einen Verweis auf ein Objekt gespeichert hat, indem Sie den Nullwert direkt erkennen, zum Beispiel:
if(car != null)
{ // Ja, das Autoobjekt führt eine Operation aus
}
Tatsächlich wird der undefinierte Wert vom Nullwert abgeleitet, daher schreibt ECMA-262 vor, dass ihr Gleichheitstest „true“ zurückgibt.
alert(undefiniert == null); //true
Obwohl null und undefiniert eine solche Beziehung haben, sind ihre Verwendungen völlig unterschiedlich. Unter keinen Umständen ist es notwendig, den Wert einer Variablen explizit auf undefiniert zu setzen, aber die gleiche Regel gilt nicht für null. Mit anderen Worten: Solange eine Variable, die ein Objekt enthalten soll, nicht tatsächlich ein Objekt enthält, sollten Sie die Variable explizit einen Nullwert enthalten lassen. Dies spiegelt nicht nur die Konvention von null als Nullobjektzeiger wider, sondern hilft auch dabei, null und undefiniert besser zu unterscheiden.
Obwohl es nur zwei Literalwerte vom Typ Boolean gibt, haben alle Wertetypen in JavaScript Werte, die diesen beiden Booleschen Werten entsprechen. Um einen Wert in den entsprechenden booleschen Wert umzuwandeln, können Sie die Typkonvertierungsfunktion Boolean() aufrufen, zum Beispiel:
var message = 'Hello World';
var messageAsBoolean = Boolean(message);In diesem Beispiel wird die Zeichenfolge message in einen booleschen Wert umgewandelt, der in der Variablen messageAsBoolean gespeichert wird. Die Funktion Boolean() kann für einen Wert eines beliebigen Datentyps aufgerufen werden und gibt immer einen booleschen Wert zurück. Ob der zurückgegebene Wert wahr oder falsch ist, hängt vom Datentyp des umzuwandelnden Werts und seinem tatsächlichen Wert ab. Die folgende Tabelle enthält die Konvertierungsregeln für verschiedene Datentypen und ihre Objekte.
Diese Konvertierungsregeln sind sehr wichtig für das Verständnis von Flusskontrollanweisungen (z. B. if-Anweisungen) und die automatische Durchführung entsprechender boolescher Konvertierungen, zum Beispiel:
if(message)
{warning("Value is true"); }
Führen Sie dieses Beispiel aus und ein Warnfeld wird angezeigt angezeigt werden, da die Zeichenfolgennachricht automatisch in den entsprechenden booleschen Wert (true) umgewandelt wird. Aufgrund dieser automatisch durchgeführten Booleschen Konvertierung ist es wichtig, genau zu wissen, welche Variablen in Flusskontrollanweisungen verwendet werden.
Nummerntyp
Dieser Typ wird zur Darstellung von Ganzzahlen und Gleitkommawerten verwendet, und es gibt auch einen Sonderwert, NaN (Not a Number). Dieser Wert wird verwendet, um anzuzeigen, dass ein Operand, der einen Wert zurückgeben soll, keinen Wert zurückgibt (so dass kein Fehler ausgegeben wird). In anderen Programmiersprachen führt beispielsweise die Division eines beliebigen numerischen Werts durch Null zu einem Fehler, der die Codeausführung stoppt. In JavaScript gibt jedoch jeder durch 0 geteilte Wert NaN zurück, sodass die Ausführung anderen Codes nicht beeinträchtigt wird.
NaN selbst hat zwei außergewöhnliche Eigenschaften. Erstens gibt jede Operation mit NaN (z. B. NaN/10) NaN zurück, was bei mehrstufigen Berechnungen zu Problemen führen kann. Zweitens ist NaN keinem Wert gleich, auch nicht NaN selbst. Der folgende Code gibt beispielsweise false zurück.
alert(NaN == NaN); //false
Es gibt eine isNaN()-Funktion in JavaScript. Diese Funktion akzeptiert einen Parameter, der von jedem Typ sein kann Mithilfe der Funktion können wir feststellen, ob dieser Parameter „kein numerischer Wert“ ist. Nachdem isNaN() einen Wert empfängt, versucht es, den Wert in einen numerischen Wert umzuwandeln. Einige Werte, die nicht numerisch sind, werden direkt in numerische Werte umgewandelt, beispielsweise die Zeichenfolge „10“ oder ein boolescher Wert. Jeder Wert, der nicht in einen numerischen Wert konvertiert werden kann, führt dazu, dass diese Funktion „true“ zurückgibt. Zum Beispiel:
Alert(isNaN(NaN)); //true
Alert(isNaN(10)); //false(10 ist ein numerischer Wert)
Alert(isNaN("10 ") ); //false (kann in einen numerischen Wert 10 konvertiert werden)
Alert(isNaN("blue")); //true (kann nicht in einen numerischen Wert konvertiert werden)
Alert(isNaN(true )); //false (Kann in numerischen Wert 1 konvertiert werden)
Es gibt 3 Funktionen, die nicht numerische Werte in numerische Werte umwandeln können: Number(), parseInt() und parseFloat (). Die erste Funktion, die Konvertierungsfunktion Number(), kann für jeden Datentyp verwendet werden, während die anderen beiden Funktionen speziell zum Konvertieren von Zeichenfolgen in Zahlen dienen. Diese drei Funktionen geben unterschiedliche Ergebnisse für dieselbe Eingabe zurück.
Die Konvertierungsregeln der Funktion Number() lauten wie folgt:
● Wenn es sich um einen booleschen Wert handelt, werden wahr und falsch durch 1 bzw. 0 ersetzt
● Wenn es sich um einen numerischen Wert handelt, einfach übergeben und zurückgeben
● Wenn es sich um einen Nullwert handelt, 0 zurückgeben
● Wenn er undefiniert ist, NaN zurückgeben
● Wenn es sich um eine Zeichenfolge handelt, befolgen Sie die folgenden Regeln:
○ Wenn die Zeichenfolge nur Zahlen enthält, wird sie in einen Dezimalwert umgewandelt, d. h. „1“ wird zu 1, „123“ wird zu 123 und „011“ wird zu 11 (führende 0 wird ignoriert)
○ Wenn die Zeichenfolge ein gültiges Gleitkommaformat wie „1.1“ enthält, wird sie in die entsprechende Gleitkommazahl konvertiert (ähnlich , führende 0 wird ebenfalls ignoriert)
○ Wenn die Zeichenfolge ein gültiges Hexadezimalformat enthält, z. B. „0xf“, dann konvertieren Sie sie in einen dezimalen Ganzzahlwert derselben Größe
○ Wenn Die Zeichenfolge ist leer, dann konvertieren Sie sie in 0
○ Wenn die Zeichenfolge andere Zeichen als das oben genannte Format enthält, konvertieren Sie sie in NaN
● Wenn es sich um ein Objekt handelt, rufen Sie valueOf() auf Methode des Objekts und dann folgen Die vorherige Regel transformiert den zurückgegebenen Wert. Wenn das Ergebnis der Konvertierung NaN ist, wird die toString()-Methode des Objekts aufgerufen und dann wird der zurückgegebene String-Wert gemäß den vorherigen Regeln konvertiert.
var num1 = Number("Hello World"); //NaN
var num2 = Number(""); //0
var num3 = Number("000011"); 11
var num4 = Number(true); parseInt() Funktion. Wenn die Funktion parseInt() einen String konvertiert, kommt es eher darauf an, ob er dem numerischen Muster entspricht. Es ignoriert führende Leerzeichen in der Zeichenfolge, bis das erste Nicht-Leerzeichen gefunden wird. Wenn die erste Zeichenfolge kein numerisches Zeichen oder ein negatives Vorzeichen ist, gibt parseInt() NaN zurück. Das heißt, die Verwendung von parseInt() zum Konvertieren einer leeren Zeichenfolge gibt NaN zurück. Wenn das erste Zeichen ein numerisches Zeichen ist, analysiert praseInt() das zweite Zeichen weiter, bis alle nachfolgenden Zeichen analysiert wurden oder ein nicht numerisches Zeichen gefunden wird. Beispielsweise wird „1234blue“ in 1234 und „22,5“ in 22 umgewandelt, da der Dezimalpunkt kein gültiges numerisches Zeichen ist.
var num1 = PARSEINT ("1234blue"); // var num2 = PARSEINT (""); // Nan
var num3 = Parseint ("0xa");
var num4 = parseInt("22.5"); var num5 = parseInt("070"); var num9 = parseInt ("10",10); //10 (im Dezimalformat analysiert)
var num10 = parseInt("10",16); //16 (im Hexadezimalformat) Parsing)
var num11 = parseInt( "AF"); use with parseInt using ' ' s ' mit parse using ‐ ‐ ‐ ‐ ‐ , var num11 = parseInt("AF"() Funktion ist ähnlich, parseFloat() analysiert auch jedes Zeichen beginnend mit dem erstes Zeichen (Position 0). Und es wird bis zum Ende der Zeichenfolge analysiert oder bis ein ungültiges numerisches Gleitkommazeichen gefunden wird. Das heißt, der erste Dezimalpunkt in der Zeichenfolge ist gültig, der zweite Dezimalpunkt jedoch ungültig, sodass die darauf folgende Zeichenfolge ignoriert wird. Beispielsweise wird „22.34.5“ in 22.34 umgewandelt.
Der zweite Unterschied zwischen parseFloat() und parseInt() besteht darin, dass führende Nullen immer ignoriert werden. Da parseFloat()-Werte Dezimalwerte analysieren, ist es nicht sinnvoll, die Basis mit dem zweiten Argument anzugeben.
VAR NUM2 = PARSEFLOAT ("0xa"); // 0
Var Num3 = Parsefloat ("22.5"); 22.5
var num4 = parseFloat("22.34.5"); //22.34
var num5 = parseFloat("0908.5"); //908.5
var str2 = 'Hello';
any Die Länge einer Zeichenfolge kann durch Zugriff auf ihr Längenattribut
Alert(str1.length); // Ausgabe 5
varfoundAsString =found.toString(); //String „true“
Numerische, boolesche, Objekt- und Zeichenfolgenwerte haben alle toString() Methode, aber null und undefinierte Werte In den meisten Fällen müssen Sie beim Aufruf der toString()-Methode keine Parameter übergeben. Beim Aufrufen der toString()-Methode eines Werts können Sie jedoch einen Parameter übergeben: den Ausgabewert. Base.
Alert(num.toString()); //"10"
Alert(num.toString(2)); //"1010" Alert(num.toString(8)); //"12"
Alert(num.toString(10)); //"10"
Wie Sie diesem Beispiel entnehmen können, ändert die Methode toString() durch Angabe der Basis den Ausgabewert. Der Wert 10 kann bei der Ausgabe je nach in unterschiedliche Werte umgewandelt werden die Basis.
Wenn Sie nicht wissen, ob der zu konvertierende Wert null oder undefiniert ist, können Sie auch die Konvertierungsfunktion String() verwenden, die jeden Werttyp in einen String konvertieren kann. Befolgen Sie die folgenden Konvertierungsregeln:
● Wenn der Wert eine toString()-Methode hat, rufen Sie diese Methode (ohne Parameter) auf und geben Sie das entsprechende Ergebnis zurück
● Wenn der Wert null ist, geben Sie „ zurück. null“
● Wenn der Wert undefiniert ist, geben Sie „undefiniert“ zurück
var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
Alert(String(Wert1)); //"10"
Alert(String(Wert2)); //"true"
Alert(String(Wert3));
Objekttyp
Ein Objekt ist eigentlich eine Sammlung von Daten und Funktionen. Objekte können erstellt werden, indem der Operator new gefolgt vom Namen des zu erstellenden Objekttyps ausgeführt wird. Sie können ein benutzerdefiniertes Objekt erstellen, indem Sie eine Instanz des Objekttyps erstellen und ihr Eigenschaften und/oder Methoden hinzufügen.
var o = new Object();
Jede Instanz von Object verfügt über die folgenden Eigenschaften und Methoden:
● Konstruktor – enthält das Objekt, das zum Erstellen verwendet wird aktuelle Objektfunktionen
● hasOwnProperty(propertyName) – wird verwendet, um zu prüfen, ob die angegebene Eigenschaft in der aktuellen Objektinstanz vorhanden ist (nicht im Prototyp der Instanz). Darunter muss der Eigenschaftsname (propertyName) als Parameter in Form einer Zeichenfolge angegeben werden (zum Beispiel: o.hasOwnProperty("name"))
● isPrototypeOf(object) – wird verwendet, um zu überprüfen, ob Das eingehende Objekt ist der Prototyp eines anderen Objekts.
● propertyIsEnumerable(propertyName) – wird verwendet, um zu überprüfen, ob die angegebene Eigenschaft mithilfe einer For-In-Anweisung aufgezählt werden kann.
● toString() – gibt die zurück String-Darstellung des Objekts
● valueOf() – Gibt eine String-, numerische oder boolesche Darstellung des Objekts zurück. Normalerweise identisch mit dem Rückgabewert der toString()-Methode.