Es gibt 5 einfache Datentypen in ECMAscript, auch als Basisdatentypen bekannt: Undefiniert, Null, Boolean, Zahl und String. Es gibt auch einen komplexen Datentyp – Objekt.
Undefinierter Typ
Wenn eine Variable mit var deklariert, aber nicht initialisiert wird, ist der Wert der Variablen undefiniert. Zum Beispiel:
var number; document.write(number); //undefined
Wenn die Variable nicht deklariert ist, tritt der folgende Fehler auf. Zum Beispiel:
document.write(str); //错误
Aber bei der Ausführung mit typeof wird ein undefinierter Wert zurückgegeben, unabhängig davon, ob er deklariert ist oder nicht. Zum Beispiel:
var num; document.write(typeof num); //undefined document.write(typeof str); //undefined
Nulltyp
Wenn typeof zum Erkennen von Null verwendet wird, wird „object“ zurückgegeben. Zum Beispiel:
var num = null; document.write(typeof num); //object
Tatsächlich wird der undefinierte Wert vom Nullwert abgeleitet, sodass sie true zurückgeben, wenn sie gleich sind. Zum Beispiel:
alert(null == undefined); //true
Hier ist zu beachten, dass, solange die Variable, die das Objekt speichern soll, das Objekt nicht tatsächlich gespeichert hat, der Variablen explizit gestattet werden sollte, den Nullwert zu speichern. Dies hilft bei der Unterscheidung zwischen null und undefiniert. Zum Beispiel:
var num1 = null; var num2; document.write(typeof num1 + " " + typeof num2); //object undefined
Boolescher Typ
Um einen Wert in den entsprechenden booleschen Wert umzuwandeln, können Sie die Konvertierungsfunktion Boolean() verwenden. Zum Beispiel:
var str = "helloworld"; document.write(Boolean(str)); //true
Kapitel 3.4.4 im Buch „JavaScript Advanced Programming Design“ enthält eine Tabelle mit verschiedenen Datentypen und ihren entsprechenden Konvertierungsregeln. Es gibt wahrscheinlich folgende Typen:
var str = "helloworld"; if (str){ document.write("hellothere"); } //hellothere
Nummerntyp
Ganzzahlen können nicht nur dezimal dargestellt werden, sondern auch durch oktale oder hexadezimale Literalwerte. Das erste Bit des oktalen Literalwerts muss 0 sein, gefolgt von einer Folge oktaler Ziffern (0~7). Zum Beispiel:
var num1 = 070; //八进制的56 var num2 = 032; //八进制的32 var num3 = 079; //错误的八进制(>7) var num4 = 09; //错误的八进制(>7)
var num1 = 0xA; //十六进制的10 var num1 = 0xa; //也是十六进制的10(字母不区分大小写)
Gleitkommawert
Hier ist es wichtig zu beachten, dass Sie niemals bestimmte Gleitkommawerte vergleichen sollten. Zum Beispiel:
var a = 0.1; var b = 0.2; if (a + b == 0.3){ document.write("you are right") } //因为0.1 加上0.2 实际上等于0.30000000000000004
Wertebereich
Die Maximal- und Minimalwerte, die ECMAScript darstellen kann, werden in Number.MAX_VALUE und Number.MIN_VALUE gespeichert. Um festzustellen, ob ein Wert endlich ist, verwenden Sie die Funktion isFinite(). Zum Beispiel:
document.write(isFinite(Number.MAX_VALUE + Number.MAX_VALUE)); //false
NaN
0 geteilt durch 0 ergibt NaN, eine positive Zahl geteilt durch 0 ergibt Unendlich und eine komplexe Zahl ergibt -Unendlich. Zweitens ist NaN keiner Zahl gleich, auch nicht sich selbst. Darüber hinaus kann uns die Funktion isNaN() dabei helfen, festzustellen, ob dieser Parameter „kein numerischer Wert“ ist. Zum Beispiel:
document.write(isNaN("a")); //true; document.write(isNaN("324")); //false; document.write(isNaN(true)); //false; document.write(isNaN(false)); //false; document.write(isNaN(NaN)); //true;
Numerische Konvertierung
Es gibt drei Funktionen, die nicht numerische Werte in numerische Werte umwandeln können: Number(), parseInt() und parseFloat().Die Konvertierungsregeln von Number() lauten wie folgt:
Wenn es sich um einen booleschen Wert handelt, werden wahr und falsch in 1 und 0 umgewandelt.
Wenn es sich um einen numerischen Wert handelt, bleibt er unverändert.
Wenn es sich um einen Nullwert handelt, wird er in 0 konvertiert.
Wenn es undefiniert ist, wird NaN zurückgegeben.
Wenn es sich um eine Zeichenfolge handelt, befolgen Sie die folgenden Regeln:
document.write(Number(true)); //1 document.write(Number(false)); //0 document.write(Number("789")); //789 document.write(Number(null)); //0 document.write(Number(undefined)); //NaN document.write(Number("02.0942")); //2.0942 document.write(Number(0xa)); //10 document.write(Number("")); //0 document.write(Number("fdsa")); //NaN
parseInt()的转换规则如下:
下面是具体的例子:
document.write(parseInt("fds")); //NaN document.write(parseInt("")); //NaN document.write(parseInt("1111112abc")); //1111112 document.write(parseInt("-1111112abc")); //-1111112 document.write(parseInt("+1111112abc")); //-1111112 document.write(parseInt("0xa")); //10 document.write(parseInt("0022.00009")); //22 document.write(parseInt("070")); //ECMAScript 3认为是56(八进制), ECMAScript 5认为是70(十进制)
另外需要注意的是,ECMAScript 5已经不具备解析八进制值的能力了所以为了消除这个问题,可以为这个函数提供第二个参数:转换时使用的基数(多少进制),具体如下:
document.write(parseInt("070",10)); //70 document.write(parseInt("070",8)); //56 document.write(parseInt("070",16)); //112
多数情况下,最好默认设置成10进制。
parseFloat()的转换规则如下:
下面是具体的例子:
document.write(parseFloat("421")); //421 document.write(parseFloat("0421.32.1")); //421.32 document.write(parseFloat("0xaafd")); //0 document.write(parseFloat("070")); //70 document.write(parseFloat("070abc")); //70 document.write(parseFloat("")); //NaN document.write(parseFloat("abc")); //NaN
String 类型
要把一个值转换成字符串有两种方式。第一种是使用几乎每个值都有的toString()方法。如下:
document.write((533).toString(10)); //"533" document.write((0xa).toString(10)); //"10" document.write((0xa).toString(2)); //"1010" document.write((true).toString(10)); //"true" document.write((false).toString(10)); //"false"
另外需要注意的是,null 和 undefined 不能转换。
document.write((null).toString(10)); // document.write((undefined).toString(10)); //
如果不知道需要转换的数值是否是null 或者undefined 则应该使用转型函数String(),如果是null 会返回"null"如果是undefined 会返回"undefined"。如下:
document.write(String(null)); //"null" document.write(String(undefined)); //"undefined"
另外在下一篇文章中再详细介绍Object 类型。
以上就是关于JavaScript数据类型的简单介绍,希望对大家学习JavaScript数据类型有所帮助。