Heim  >  Artikel  >  Web-Frontend  >  Einführung in JavaScript-Datentypen

Einführung in JavaScript-Datentypen

不言
不言nach vorne
2019-03-23 09:33:472156Durchsuche

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

  • Zahl
  • String
  • Boolean
  • Undefiniert
  • Null
  • Symbol

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.3Das 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

  1. Unendlich Wenn der Wert den Maximalwert des Zahlentyps überschreitet, wird er zu einer positiven Unendlichkeit
  2. - Unendlich Wenn der numerische Typ kleiner als der Mindestwert des Zahlentyps ist, wird er zu einer negativen Unendlichkeit.
  3. NaN bedeutet, dass es sich beispielsweise nicht um einen numerischen Wert handelt, der durch 0 geteilt wird In normalen Sprachen wird ein Fehler gemeldet, in js jedoch nicht. Stattdessen wird der Wert der Variablen zu NaN.

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen