Beurteilungsmethode: 1. Verwenden Sie die Anweisung „value%1===0“; 2. Verwenden Sie die Anweisung „Math.floor(value)===value“; =value“ ”-Anweisung; 4. Verwenden Sie die Anweisung „(value|0)===value“; 5. Verwenden Sie die Anweisung „Number.isInteger(value)“.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.
JavaScript unterscheidet nicht zwischen Ganzzahlen und Gleitkommazahlen. Alle Zahlen werden intern im 64-Bit-Gleitkommaformat dargestellt, genau wie der Double-Typ von Java. Tatsächliche Operationen wie Array-Indizierung und Bitoperationen basieren jedoch auf 32-Bit-Ganzzahlen. Wie kann man also feststellen, ob es sich um einen Ganzzahltyp (Integer) handelt?
Methode 1: Verwenden Sie den Restoperator, um zu bestimmen,
Jede ganze Zahl ist durch 1 teilbar, d. h. der Rest ist 0. Verwenden Sie diese Regel, um zu bestimmen, ob es sich um eine Ganzzahl handelt.
function isInteger(obj) { return obj%1 === 0 } isInteger(3) // true isInteger(3.3) // false
Aus der obigen Ausgabe ist ersichtlich, dass diese Funktion sehr nützlich ist, aber für Zeichenfolgen und einige Sonderwerte machtlos.
isInteger('') // true isInteger('3') // true isInteger(true) // true isInteger([]) // true
Sie gibt „true“ für leere Zeichenfolgen, Zeichenfolgentypzahlen, boolesche Werte „true“ und leere Arrays zurück. Es ist wirklich schwierig, es zu akzeptieren. Wenn Sie an den internen Konvertierungsdetails dieser Typen interessiert sind, lesen Sie bitte: Seltsame falsche Werte in JavaScript
Daher müssen Sie zunächst feststellen, ob das Objekt eine Zahl ist, z. B. durch Hinzufügen eines Typs von
function isInteger(obj) { return typeof obj === 'number' && obj%1 === 0 } isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
Nun, das ist perfekter.
Methode 2: Verwenden Sie Math.floor, um zu bestimmen, ob die
Ganzzahl nach dem Runden immer noch sich selbst entspricht. Verwenden Sie diese Funktion, um zu bestimmen, ob es sich um eine Ganzzahl handelt. Das Math.floor-Beispiel lautet wie folgt:
function isInteger(obj) { return Math.floor(obj) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
Dies maskiert direkt die Zeichenfolge „true“ und die Codemenge ist geringer als bei der vorherigen Funktion.
Methode 3: Nach parseInt urteilen
function isInteger(obj) { return parseInt(obj, 10) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
ist sehr gut, aber es gibt auch einen Nachteil:
isInteger(1000000000000000000000) // false
gibt tatsächlich false zurück, was unvernünftig ist. Der Grund dafür ist, dass parseInt die Analyse des ersten Arguments in eine Zeichenfolge erzwingt, bevor die Ganzzahl analysiert wird. Diese Methode zur Konvertierung von Zahlen in ganze Zahlen ist keine gute Wahl.
Methode 4. Beurteilung durch Bitoperationen
function isInteger(obj) { return (obj | 0) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
Diese Funktion ist sehr gut und sehr effizient. Aber es gibt einen Fehler. Wie oben erwähnt, können Bitoperationen nur Zahlen innerhalb von 32 Bit verarbeiten und können nichts mit mehr als 32 Bit tun, wie zum Beispiel
isInteger(Math.pow(2, 32)) // 32位以上的数字返回false了
Natürlich werden wir in den meisten Fällen keine so großen Zahlen verwenden.
Methode 5. ES6 bietet Number.isInteger
Number.isInteger(3) // true Number.isInteger(3.1) // false Number.isInteger('') // false Number.isInteger('3') // false Number.isInteger(true) // false Number.isInteger([]) // false
Derzeit wird es bereits vom neuesten Firefox und Chrome unterstützt.
Hinweis: Jede dieser fünf Methoden hat ihre eigenen Vor- und Nachteile. Sie können sie sorgfältig vergleichen und die beste für die Anwendung auswählen.
【Empfohlenes Lernen: Javascript-Tutorial für Fortgeschrittene】
Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob ein Wert in Javascript eine Ganzzahl ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!