Vorwort: JavaScript-Datentypen werden in zwei Kategorien unterteilt: primitive Typen und Objekttypen. 5 primitive Typen: Zahl, Zeichenfolge, boolescher Wert, null (leer), undefiniert (undefiniert). Ein Objekt ist eine Sammlung von Attributen, und jedes Attribut besteht aus einem „Name/Wert-Paar“ (der Wert kann ein primitiver Wert oder ein Objekt sein). Drei spezielle Objekte: globale Objekte, Arrays und Funktionen. Der Kern der JavaScript-Sprache definiert außerdem drei nützliche Klassen: Datumsklasse (Date), reguläre Klasse (RegExp) und Fehlerklasse (Error).
1 Zahl
JavaScript unterscheidet nicht zwischen Ganzzahlwerten und Gleitkommawerten. JavaScript kann dezimale Ganzzahlliterale (die sogenannten Literale sind Datenwerte, die direkt im Programm verwendet werden) und Hexadezimalwerte (mit dem Präfix 0x oder 0X, also der Zahl 0 und nicht dem Buchstaben o) erkennen. Denken Sie darüber nach wenn es der Buchstabe o ist. Wenn ja, dann wird der Hexadezimalwert zu einem Bezeichner.) Obwohl der ECMAScript-Standard keine Oktalliterale unterstützt, können einige Implementierungen von JavaScript die Oktalform zur Darstellung von Ganzzahlen verwenden (mit der Zahl 0 als Präfix). Der Autor verwendet Oktal zur Darstellung einer Ganzzahl in den drei Browsern IE, Chrome und FF auf my Auch die Variablenzuweisung ist kein Problem. Im strikten Modus von ECMAScript6 sind Oktalliterale jedoch ausdrücklich verboten.
Es gibt zwei Möglichkeiten, Gleitkommaliterale zu schreiben. ① Traditionelle Art, reelle Zahlen zu schreiben: Sie besteht aus einem ganzzahligen Teil, einem Dezimalpunkt und einem Dezimalteil. ② Exponentenzählmethode: Das heißt, auf die reelle Zahl folgt der Buchstabe e oder E, gefolgt von einem positiven oder negativen Vorzeichen , gefolgt von einem ganzzahligen Exponenten.
1.1 Überlauf arithmetischer Operationen
Arithmetische Operationen in JavaScript melden keine Fehler, wenn sie überlaufen, unterlaufen oder durch 0 teilbar sind.
Überlauf: Wenn das Operationsergebnis die Obergrenze der Zahl überschreitet, die JavaScript darstellen kann, ist das Ergebnis positive Unendlichkeit oder negative Unendlichkeit-Unendlichkeit. Die Verhaltensmerkmale von Unendlichkeitswerten stimmen ebenfalls mit der Realität überein: Die Ergebnisse der darauf basierenden Additions-, Subtraktions-, Multiplikations- und Divisionsoperationen sind immer noch Unendlichkeitswerte (natürlich behalten sie ihre Vorzeichen bei): wenn das Operationsergebnis unendlich ist; nahe Null und ist kleiner als der kleinste Wert, den JavaScript darstellen kann. Was geschah, als der Wert noch klein war? In diesem Fall wird 0 zurückgegeben. Der Sonderwert „negative Null“ wird zurückgegeben, wenn eine negative Zahl unterläuft. Negative Null und ganze Null sind im Wesentlichen gleich (kann sogar mit strikter Gleichheit === getestet werden), außer als Teiler:
var zero = 0; //正零值 var negz = -0; //负零值 zero === negz //表达式返回值为true 1/zero === 1/negz //表达式返回值false,等价于判断正无穷大和负无穷大是否严格相等
Die Teilbarkeit durch 0 ergibt positive Unendlichkeit oder negative Unendlichkeit. Wenn Sie jedoch 0 durch 0 dividieren, wird NaN zurückgegeben (der Wert der NaN-Eigenschaft des vordefinierten JavaScript-Objekts Number). Es gibt vier Situationen, in denen NaN zurückgegeben wird: ① 0 geteilt durch 0 ② Unendlich geteilt durch Unendlich ③ Ausführen einer Quadratwurzeloperation für eine beliebige negative Zahl ④ wenn arithmetische Operatoren mit Operanden verwendet werden, die keine Zahlen sind oder nicht in Zahlen umgewandelt werden können.
Der NaN-Wert hat etwas Besonderes: Er ist mit keinem Wert gleich, auch nicht mit sich selbst. Es gibt zwei Möglichkeiten zu beurteilen, ob eine Variable x NaN ist: ① Verwenden Sie die Funktion isNaN(). ② Verwenden Sie x != x, um zu beurteilen. Das Ausdrucksergebnis ist genau dann wahr, wenn x NaN ist. Es gibt eine ähnliche Funktion isFinite() in JavaScript, die true zurückgibt, wenn der Parameter nicht NaN, Infinity oder -Infinity ist.
1.2 Binäre Gleitkommazahlen und Rundungsfehler
Es gibt unzählige reelle Zahlen, aber JavaScript kann nur eine begrenzte Anzahl davon in Form von Gleitkommazahlen darstellen. Mit anderen Worten: Wenn reelle Zahlen in JavaScript verwendet werden, handelt es sich oft nur um eine ungefähre Darstellung eines reellen Werts. JavaScript verwendet die IEEE-754-Gleitkommazahlendarstellung, eine binäre Darstellung, die Brüche wie 1/2, 1/8 und 1/1024 genau darstellen kann, aber Dezimalbrüche 1/10, 1/10 usw. können nicht ausgedrückt werden genau. Zum Beispiel:
var x = 0.3 -0.2; //x=0.09999999999999998 var y = 0.2 - 0.1; // y=0.1 x == y //false x == 0.1 //false y == 0.1 //true 0.1 == 0.1 //true var z = x + y; //z=0.19999999999999998
2 文本
2.1 字符串、字符集
字符串(string)是一组由16位值组成的不可变的有序序列,每个字符通常来自于Unicode字符集。字符串的长度(length)是其所含16位值得个数。JavaScript通过字符串类型来表示文本。注意:JavaScript中并没有表示单个字符的“字符型”。要表示一个16位值,只需将其赋值给字符串变量即可。
JavaScript采用UTF-16编码的Unicode字符集,JavaScript字符串是由一组无符号的16位值组成的序列。那些不能表示为16位的Unicode字符则遵循UTF-16编码规则——用两个16位值组成一个序列(或称作“代理项对”)表示。这意味着一个长度为2的JavaScript字符串有可能表示一个Unicode字符。注意:JavaScript定义的各式字符串的操作方法均作用于16位值,而非字符,且不会对代理项对做单独处理。书看到这里,又结合http://www.alloyteam.com/2013/12/js-calculate-the-number-of-bytes-occupied-by-a-string/上面所述,终于对Unicode字符集、UTF-8、UTF-16稍有理解。
字符串的定界符可以是单引号或者双引号。这两种形式的定界符可以嵌套,但是不能多层嵌套(比如,双引号可以包含单引号,这时单引号中不能再包含双引号了)。正如上篇所说,一个字符串值可以拆分为数行,每行必须以反斜线(\)结束,这时反斜线和行结束符都不算是字符串内容,即字符串本身并非是多行,只是写成了多行的形式。
注意:①在JavaScript中字符串是固定不变的(除非重新赋值),类似replace()和toUpperCase()的方法都返回新字符串,原字符串本身并没有变化;②字符串可以当做只读数组,除了使用charAt()方法来查询一个单一字符,也可以使用方括号的方式来访问字符串中的单个字符(16位值),例如:
s = "hello, world"; s[0] //=>"h"
2.2 Escape-Zeichen
Bedeutung des Escape-Zeichens
o NUL-Zeichen (u0000)
b Rücktaste (u0008)
t Horizontale Registerkarte (u0009)
n Zeilenumbruchzeichen (u000A)
v Vertikale Registerkarte (u000B)
f Formularvorschubzeichen (u000C)
r Wagenrücklauf (u000D)
" Doppelte Anführungszeichen (u0022)
' Apostroph oder einfaches Anführungszeichen (u0027)
\ Backslash(u005C)
xXX Latin-1-Zeichen, angegeben durch die zweistellige Hexadezimalzahl XX
uXXXX Unicode-Zeichen, angegeben durch die vierstellige Hexadezimalzahl XXXX
Hinweis: Wenn das Zeichen „“ vor einem Zeichen steht, das nicht in der Tabelle aufgeführt ist, wird das Zeichen „“ ignoriert. Beispielsweise sind „#“ und „#“ gleichwertig. Vergessen Sie nicht, dass Backslashes auch bei der Verwendung von Backslashes am Ende jeder Zeile in mehrzeiligen Zeichenfolgen eine Rolle spielen.
3 Boolescher Wert
Werte in JavaScript können in boolesche Werte konvertiert werden. Unter diesen werden null, undefiniert, 0, -0, NaN, „“ (leere Zeichenfolge) in „falsch“ und „falsch“ umgewandelt. Diese sechs Werte werden manchmal alle als „falsche Werte“ bezeichnet Andere Werte, einschließlich Objekte (Arrays), werden in „true“ konvertiert, und diese Werte werden „wahre Werte“ genannt. Hinweis: Boolean enthält die Methode toString(), sodass Sie diese Methode zum Konvertieren einer Zeichenfolge in „true“ oder „false“ verwenden können. Andere nützliche Methoden sind jedoch nicht enthalten.Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.