Number.isInteger()
Метод Number.isInteger() определяет, является ли переданное значение целым числом.
Интерактивный пример
Синтаксис
Number.isInteger(value)
Параметры
Значение, проверяемое на целочисленность.
Возвращаемое значение
Boolean сообщающий о том, является ли переданное значение целочисленным числом.
Описание
Если целевое значение является целым числом, возвращает true . Если значение NaN или Infinity , то возвращает false . Метод также возвращает true , если это вещественное число с точкой, которое может быть представлено в целочисленном виде.
Примеры
.isInteger(0); // true Number.isInteger(1); // true Number.isInteger(-100000); // true Number.isInteger(99999999999999999999999); // true Number.isInteger(0.1); // false Number.isInteger(Math.PI); // false Number.isInteger(NaN); // false Number.isInteger(Infinity); // false Number.isInteger(-Infinity); // false Number.isInteger("10"); // false Number.isInteger(true); // false Number.isInteger(false); // false Number.isInteger([1]); // false Number.isInteger(5.0); // true Number.isInteger(5.000000000000001); // false Number.isInteger(5.0000000000000001); // true
Полифил
.isInteger = Number.isInteger || function (value) return ( typeof value === "number" && isFinite(value) && Math.floor(value) === value ); >;
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-number.isinteger |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- Объект Number , которому принадлежит этот метод.
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 7 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
MDN
Support
- Product help
- Report an issue
Our communities
Developers
- Web Technologies
- Learn Web Development
- MDN Plus
- Hacks Blog
- Website Privacy Notice
- Cookies
- Legal
- Community Participation Guidelines
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.
Rukovodstvo
статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
JavaScript: проверьте, является ли переменная числом
Введение JavaScript — это язык с динамической типизацией, что означает, что интерпретатор определяет тип переменной во время выполнения. На практике это позволяет нам использовать одну и ту же переменную для хранения разных типов данных в одном и том же коде. Это также означает, что без документации и согласованности мы не всегда знаем тип переменной в нашем коде, когда мы ее используем. Работа со строкой или массивом, когда мы ожидаем числа, может привести к странным результатам в нашем коде. В этой статье мы рассмотрим вариометр.
Время чтения: 3 мин.
Вступление
JavaScript — это язык с динамической типизацией, что означает, что интерпретатор определяет тип переменной во время выполнения. На практике это позволяет нам использовать одну и ту же переменную для хранения разных типов данных в одном и том же коде. Это также означает, что без документации и согласованности мы не всегда знаем тип переменной в нашем коде, когда мы ее используем.
Работа со строкой или массивом, когда мы ожидаем числа, может привести к странным результатам в нашем коде. В этой статье мы рассмотрим различные функции, которые могут помочь определить, является ли переменная, которую мы используем, числом.
Строки, содержащие числа вроде «10», не принимаются. В JavaScript специальные значения, такие как NaN , Infinity и -Infinity , тоже являются числами, однако мы будем игнорировать эти значения.
С учетом этих требований лучше всего использовать функцию isFinite() из встроенного объекта Number
Однако разработчики обычно использовали для этой цели другие функции, в частности Number.isNaN() и функцию typeof()
Создадим несколько переменных для тестирования:
let intVar = 2; let floatVar = 10.5; let stringVar = '4'; let nanVar = NaN; let infinityVar = Infinity; let nullVar = null; let undefinedVar = undefined;
Использование функции Number.isFinite ()
Функция Number.isFinite() проверяет, является ли переменная числом, но также проверяет, является ли это конечным значением. Следовательно, он возвращает false для чисел NaN , Infinity или -Infinity .
Давайте проверим это на переменных, которые мы определили выше:
> Number.isFinite(intVar); true > Number.isFinite(floatVar); true > Number.isFinite(stringVar); false > Number.isFinite(nanVar); false > Number.isFinite(infinityVar); false > Number.isFinite(nullVar); false > Number.isFinite(undefined); false
Это именно то, что мы хотели. Специальные нефинитные числа игнорируются, как и любые переменные, не являющиеся числовыми.
Если вы хотите проверить, является ли переменная числом, лучше всего использовать Number.isFinite() .
Использование функции Number.isNaN ()
Стандартный объект Number имеет метод isNaN() Он принимает один аргумент и определяет, равно ли его значение NaN . Поскольку мы хотим проверить, является ли переменная числом, мы будем использовать оператор not ! , в наших чеках.
Теперь проверим, могут ли оператор not и Number.isNaN() фильтровать только числа:
> !Number.isNaN(intVar); true > !Number.isNaN(floatVar); true > !Number.isNaN(stringVar); true # Wrong > !Number.isNaN(nanVar); false > !Number.isNaN(infinityVar); true # Wrong > !Number.isNaN(nullVar); true # Wrong > !Number.isNaN(undefinedVar); true # Wrong
Этот метод является довольно разрешительным, поскольку он принимает значения, которые вообще не являются числами. Этот метод лучше всего подходит, когда вы знаете, что у вас есть число и хотите проверить, является ли оно NaN , а не для общей проверки числа.
Использование функции typeof ()
Функция typeof() — это глобальная функция, которая принимает переменную или значение в качестве аргумента и возвращает строковое представление своего типа. Всего у JavaScript 9 типов:
- undefined
- boolean
- number
- string
- bigint
- symbol
- object
- null ( typeof() отображается как объект)
- function (особый тип объекта)
Чтобы проверить, является ли переменная числом, нам просто нужно проверить, является ли значение, возвращаемое typeof() , «number» . Давайте попробуем это на тестовых переменных:
> typeof(intVar) == 'number'; true > typeof(floatVar) == 'number'; true > typeof(stringVar) == 'number'; false > typeof(nanVar) == 'number'; true # Wrong > typeof(infinityVar) == 'number'; true # Wrong > typeof(nullVar) == 'number'; false > typeof(undefined) == 'number'; false
Функция typeof() работает намного лучше, чем Number.isNaN() . Он правильно определяет, что строковая переменная, null и undefined не являются числами. Однако он возвращает true для NaN и Infinity .
Хотя это технически правильный результат, NaN и Infinity являются специальными числовыми значениями, и в большинстве случаев мы бы предпочли их игнорировать.
Заключение
В этой статье мы узнали, как проверить, является ли переменная в JavaScript числом. Функция Number.isNaN() подходит только в том случае, если мы знаем, что наша переменная является числом, и нам нужно проверить, является ли она конкретно NaN или нет.
Функция typeof() подходит, если ваш код может работать с NaN , Infinity или -Infinity а также с другими числами.
Метод Number.isFinite() захватывает все конечные числа и наиболее соответствует нашим требованиям.
Licensed under CC BY-NC-SA 4.0
Курсы javascript
DDim1000, если ты увернет что там конкретно число с типом «число» — да. Если там может быть строка или ещё что-нить похожее на число — используй второй вариант.
__________________
13.11.2019, 22:39
Регистрация: 02.07.2010
Сообщений: 642
(parseInt(x) == x);
Вопрос «содержит ли переменная число?» можно трактовать по-разному:
1. тип переменной Number? — пример: 1
2. если смотреть человеческими глазами, то это число? пример: ‘1’
3. содержит ли (буквально содержит) число? пример: ‘1w’
Фокус с плюсиком используется часто, но это в ряде случаев дает ложный результат: c = +’1′;
При ограничении, что мы имеем дело с целыми числами, я использую проверку: (parseInt(x) == x)
var x = 1; // a=1 r1=true/b=1 r2=number var x = '1'; // a=1 r1=true/b=1 r2=number var x = 0; // a=0 r1=true/b=0 r2=number var x = '0'; // a=0 r1=true/b=0 r2=number var x = ''; // a=NaN r1=false/b=0 r2=number var x; // a=NaN r1=false/b=0 r2=number! (x === undefined) var x = null; // a=NaN r1=false/b=0 r2=number! var x = '1w'; // a=1 r1=false/b=NaN r2=number! --- этот вариант можно трактовать по-разному. var a = parseInt(x) var b = +x; var r1 = (a == x); var r2 = typeof b; alert('a=' + a + ' r1=' + r1 + '/b=' + b + ' r2=' + r2);
Number . is Finite ( )
Поможет убедиться, что переданное значение — конечное число.
Время чтения: меньше 5 мин
Открыть/закрыть навигацию по статье
Обновлено 3 августа 2022
Кратко
Скопировать ссылку «Кратко» Скопировано
Метод Number . is Finite ( ) позволяет проверить, является ли переданное в аргументе число конечным. Конечным числом можно считать любое число, кроме бесконечности и NaN . В JavaScript бесконечность можно выразить только с помощью глобального Infinity или полей Number . POSITIVE _ INFINITY и Number . NEGATIVE _ INFINITY .
В JavaScript есть так же глобальная функция is Finite ( ) , которая работает аналогичным образом, но преобразует переданный аргумент в число.
Пример
Скопировать ссылку «Пример» Скопировано
Number.isFinite(3.14)// trueNumber.isFinite(10e5)// trueNumber.isFinite(0)// true Number.isFinite(-Infinity)// falseNumber.isFinite([])// falseNumber.isFinite('Двадцать пять')// false // Использование глобальной функции isFiniteisFinite('Сорок')// falseisFinite(50)// trueisFinite('101')// trueisFinite('10e3')// true
Number.isFinite(3.14) // true Number.isFinite(10e5) // true Number.isFinite(0) // true Number.isFinite(-Infinity) // false Number.isFinite([]) // false Number.isFinite('Двадцать пять') // false // Использование глобальной функции isFinite isFinite('Сорок') // false isFinite(50) // true isFinite('101') // true isFinite('10e3') // true
Как понять
Скопировать ссылку «Как понять» Скопировано
В математике конечным числом можно считать по сути любое число, потому что у числа есть конечное значение. Только у бесконечностей нет фиксированного и конечного значения. Метод Number . is Finite ( ) позволяет проверить это свойство у переданного числа.
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Метод Number . is Finite ( ) принимает только один аргумент – число, которое нужно проверить. Для любого нечислового значения метод вернёт false .
Если нужно убедиться что значение действительно не является числом, можно использовать метод Number.isNaN().
Number.isFinite('123')// false потому что передана строкаNumber.isFinite(<>)// false потому что передан объектNumber.isFinite(Infinity)// false потому что передали бесконечностьNumber.isFinite(NaN) //// false потому что передали не число Number.isFinite(123)// true, передали обычное числоNumber.isFinite(-456)// true, отрицательные числа тоже конечные
Number.isFinite('123') // false потому что передана строка Number.isFinite(>) // false потому что передан объект Number.isFinite(Infinity) // false потому что передали бесконечность Number.isFinite(NaN) // // false потому что передали не число Number.isFinite(123) // true, передали обычное число Number.isFinite(-456) // true, отрицательные числа тоже конечные
Бесконечность в JavaScript тоже считается числом, попробуйте ввести в консоли typeof Infinity . Выражение Number . isFinite ( Infinity ) возвращает false так как бесконечность не является конечным числом, а не потому что бесконечность — это не число.
Если возникает необходимость работать с бесконечностью, то в глобальном объекте Number имеются удобные ссылки на бесконечности с разными знаками.
Number.POSITIVE_INFINITY === Infinity// trueNumber.NEGATIVE_INFINITY === -Infinity// true
Number.POSITIVE_INFINITY === Infinity // true Number.NEGATIVE_INFINITY === -Infinity // true
На практике
Скопировать ссылку «На практике» Скопировано
Егор Огарков советует
Скопировать ссылку «Егор Огарков советует» Скопировано
Number . is Finite можно использовать для того, чтобы проверить что значение в переменной является обычным конечным числом. Так как бесконечность тоже является числом, то проверка с помощью typeof вернёт «number» . Но чаще всего мы не хотим работать в программе с бесконечными числами, потому что с ними нельзя провести математические операции.
const inf = Infinity; console.log(typeof Infinity === "number") // true// Проверка поможет отсеять бесконечные числаconsole.log(Number.isFinite(inf)) // false
const inf = Infinity; console.log(typeof Infinity === "number") // true // Проверка поможет отсеять бесконечные числа console.log(Number.isFinite(inf)) // false