Как проверить является ли переменная числом js
Перейти к содержимому

Как проверить является ли переменная числом js

  • автор:

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      

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *