Я записал много способов оценить тип числа в JavaScript. В этой статье показано, как определить целочисленный тип (целое число).
В JavaScript целые числа и числа с плавающей точкой не различаются. Все числа представлены в 64-разрядном формате с плавающей запятой, так же, как двойной тип Java. Но в реальных операциях, таких как индексация массива и операции битов, основаны на 32-разрядных целых числах.
Метод 1: Используйте оставшегося оператора, чтобы судить
Любое целое число будет делиться на 1, то есть оставшаяся часть составляет 0. Используйте это правило, чтобы определить, является ли оно целым числом.
Кода -копия выглядит следующим образом:
функция ISinteger (OBJ) {
вернуть obj%1 === 0
}
Isinteger (3) // True
Isinteger (3.3) // Неверно
Вышеуказанный вывод показывает, что эта функция очень полезна, но она, кажется, некомпетентна для строк и некоторых специальных значений.
Кода -копия выглядит следующим образом:
Isinteger ('') // True
Isinteger ('3') // true
Isinteger (True) // True
Isinteger ([]) // True
Действительно трудно принять, что пустые строки, номера типов строки, логическое истинное и пустые массивы возвращают True. Если вы заинтересованы в деталях этих типов внутренней конверсии, пожалуйста, см. Странные поддельные значения в JavaScript
Поэтому вам нужно сначала определить, является ли объект числом, таким как добавление типа
Кода -копия выглядит следующим образом:
функция ISinteger (OBJ) {
Возврат тип obj === 'номер' && obj%1 === 0
}
ISInteger ('') // False
ISINTEGER ('3') // Неверно
Isinteger (true) // false
Isinteger ([]) // Неверно
Ну, это более идеально.
2. Используйте Math.Round, Math.ceil и Math.floor, чтобы вынести суждения
Целое число по -прежнему равное себе. Используйте эту функцию, чтобы определить, является ли она целым числом. Пример математики.
Кода -копия выглядит следующим образом:
функция ISinteger (OBJ) {
return math.floor (obj) === obj
}
Isinteger (3) // True
Isinteger (3.3) // Неверно
ISInteger ('') // False
ISINTEGER ('3') // Неверно
Isinteger (true) // false
Isinteger ([]) // Неверно
Это напрямую блокирует строку, true, [], а количество кода меньше предыдущей функции.
3. Суждение через Parseint
Кода -копия выглядит следующим образом:
функция ISinteger (OBJ) {
вернуть Parseint (obj, 10) === obj
}
Isinteger (3) // True
Isinteger (3.3) // Неверно
ISInteger ('') // False
ISINTEGER ('3') // Неверно
Isinteger (true) // false
Isinteger ([]) // Неверно
Очень хорошо, но также имеет один недостаток
Кода -копия выглядит следующим образом:
ISINTEGER (1000000000000000000000000) // FALSE
Это на самом деле вернулось ложь, это было необоснованно. Причина в том, что Parseint заставляет первого параметра проанализировать в строку перед анализом целого числа. Этот метод преобразования чисел в целые числа не является хорошим выбором.
4. Суждение через битовые операции
Кода -копия выглядит следующим образом:
функция ISinteger (OBJ) {
возврат (obj | 0) === obj
}
Isinteger (3) // True
Isinteger (3.3) // Неверно
ISInteger ('') // False
ISINTEGER ('3') // Неверно
Isinteger (true) // false
Isinteger ([]) // Неверно
Эта функция очень хорошая и обладает высокой эффективностью. Но есть недостаток. Как упоминалось выше, операции битов могут обрабатывать только числа в пределах 32 бит, и они бессильны делать что -то более 32 бит, например, как
Кода -копия выглядит следующим образом:
Isinteger (Math.Pow (2, 32)) // Числа выше 32 цифр вернули ложные
Конечно, большую часть времени мы не используем такое большое количество.
5. ES6 предоставляет номер. Isinteger
Кода -копия выглядит следующим образом:
Number.isinteger (3) // true
Number.isinteger (3.1) // false
Number.isinteger ('') // false
Number.isinteger ('3') // false
Number.isinteger (true) // false
Number.isinteger ([]) // false
В настоящее время последние Firefox и Chrome уже поддерживаются.