Heim >Web-Frontend >js-Tutorial >Einführung in JavaScript-Datentypen
Dieser Artikel bietet Ihnen eine detaillierte Einführung in die JavaScript-Datentypen. Ich hoffe, dass er für Freunde hilfreich ist.
Ich habe kürzlich drei Entwickler interviewt, und keiner von ihnen konnte klar erklären, was die Grundtypen von JS sind. Und sie erwähnen oft fälschlicherweise einige Datentypen der C-Sprache, wie z. B. int, float, double und andere Datentypen.
Unabhängig von der Sprache ist die Beherrschung von Datentypen der grundlegendste Wissenspunkt der Sprache
JS-Datentypen sind in zwei Kategorien unterteilt, eine davon ist der Basistyp , Sie haben
Es gibt nur wenige Grundtypen von js. Darüber hinaus sind andere Typen Objekte.
Zahlentyp
In JS gibt es keine Werte vom Typ Integer, Float oder Double. Alle Werte werden als Zahlentyp bezeichnet.
JS verwendet das IEEE754-Format zur Darstellung von Ganzzahlen und Gleitkommazahlen. Im Allgemeinen belegen Ganzzahlen 32 Bit, während Gleitkommazahlen 64 Bit belegen. Da Gleitkommazahlen doppelt so viel Speicherplatz wie Ganzzahlen belegen, konvertiert js Gleitkommazahlen zur Speicherung entsprechend in Ganzzahlen.
4.0 === 4 // true
Numerische Typen haben eine Reihe von Größen
Number.MAX_VALUE // 1.7976931348623157e+308 Number.MIN_VALUE // 5e-324 Number.MAX_SAFE_INTEGER // 9007199254740991 Number.MIN_SAFE_INTEGER // -9007199254740991
Gleitkommazahlen führen im Allgemeinen zu ungenauen Berechnungsergebnissen. Dieses Problem besteht nicht in allen Sprachen.
Berechnung0.1 + 0.2 === 0.3
Das Ergebnis ist immer falsch.
Um zu vergleichen, ob Gleitkommazahlen gleich sind, können Sie Number.EPSILON
verwenden. Dies ist ein sehr kleiner Wert. Wenn zwei Gleitkommazahlen kleiner als Number.EPSILON sind, können sie als gleich angesehen werden.
Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON // true
Es gibt drei besondere Brüder im Zahlentyp
Sobald der numerische Typ zu diesen drei Brüdern wird, kann er nicht mehr an nachfolgenden numerischen Operationen teilnehmen.
String-Typ
Schüler, die aus statischen Sprachen kommen, werden eine Frage stellen, wenn sie auf einen String stoßen: Wie viele Strings können Sie halten?
Die Zeichenfolge lächelte albern und sagte: Seit ich geboren wurde, wurde sie nie gefüllt!
ECMAScript 2016 (Ausgabe 7) legte zuvor eine maximale Länge von 2^53 - 1 Elementen fest In Firefox wurde eine maximale Länge von 230 - 2 (~1 GB) angegeben. In Versionen vor Firefox 65 betrug die maximale Länge 228 - 1 (~256 MB). . --MDN
Boolescher Wert
Der boolesche Wert ist sehr einfach, nur zwei Werte: falsch und wahr. Viele Menschen können jedoch nicht vollständig beantworten, welche Werte in „falsch“ umgewandelt werden.
Mit Ausnahme der folgenden Werte, die in „falsch“ konvertiert werden können, sind alle anderen wahr.
false '' NaN undefined 0, -0, +0 null
undefiniert und null
undefiniert geben an, dass eine Variable definiert ist, ihr aber kein Wert zugewiesen wurde. null bedeutet, dass die Variable überhaupt nicht definiert ist. Kurz gesagt: Unabhängig davon, ob sie undefiniert oder null sind, handelt es sich grundsätzlich um unbrauchbare Werte.
Der Nulltyp hat eine besondere Funktion. Beispielsweise gibt es ein Objekt mit vielen Attributen. Wenn Sie diese Variable als bereit für die Garbage Collection markieren möchten, können Sie ihren Wert auf Null setzen.
Der bekannteste Fremde: Objekt
Ich dachte einmal, dass Objekte in js am einfachsten seien, aber tatsächlich war ich zu naiv.
// 定义一个对象,so easy var boy = { name: 'wangduanduan' }
var boy = {} Object.defineProperty(boy, 'name', { writable: false, value: 'wdd' }) boy.name = 'ddw' // 设置不会生效,boy.name的值还是wdd
Dateneigenschaften des Objekts
数据属性 | 默认值 | 说明 |
---|---|---|
configurable | true | 表示这个属性能否用delete删除 |
enumerable | true | 表示这个属性能否通过for in 循环遍历 |
writable | true | 表示这个属性能否被修改 |
value | undefined | 表示这个属性的数据值 |
Wenn Object.defineProperty aufgerufen wird, ohne konfigurierbar, aufzählbar und beschreibbar anzugeben, sind ihre Standardwerte falsch.
Accessor-Attribut
Das Accessor-Attribut ist get, und set ermöglicht Ihnen, beim Lesen oder Schreiben von Werten eine Abfangebene durchzuführen.
var man = { _sex: 1 } Object.defineProperty(man, 'sex', { set: function (v) { this._sex = v === '男' ? 1 : 0 }, get: function () { return this._sex === 1 ? "男" : "女" } }) nam.sex // 男
Denken Sie darüber nach, was passieren würde, wenn Sie _sex oben in Sex ändern würden?
// 这样写会有什么问题 var man = { sex: 1 } Object.defineProperty(man, 'sex', { set: function (v) { this.sex = v === '男' ? 1 : 0 }, get: function () { return this.sex === 1 ? "男" : "女" } })
Dieser Artikel ist hier zu Ende. Weitere spannende Inhalte finden Sie in der Spalte JavaScript-Video-Tutorial auf der chinesischen PHP-Website!
Das obige ist der detaillierte Inhalt vonEinführung in JavaScript-Datentypen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!