Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как опознать число? (https://javascript.ru/forum/misc/4226-kak-opoznat-chislo.html)

Octane 03.07.2009 16:46

Как опознать число?
 
В продолжение темы «Как опознать RegExp»

Известно, что в JavaScript NaN (Not a Number) принадлежит типу number:

alert(typeof NaN);


Как распознать, что каждая переменная является любым числом, но не NaN и не Infinity, как должна выглядеть функция isNumber?

var a = NaN;
var b = 1;
var c = {};
var d = Infinity;

function isNumber(x) {
   // ...
}

alert([isNumber(a), isNumber(b), isNumber(c), isNumber(d)]);
// Должно быть: false, true, false, false

Kolyaj 03.07.2009 16:50

А бесконечности?

Riim 03.07.2009 16:51

Если не думая, то так: x < 0 || x > 0 || x == 0
причем вариант x < 0 || x > -1 не годится, т. к. null тоже будет числом.

Octane 03.07.2009 17:00

Цитата:

Сообщение от Kolyaj
А бесконечности?

Дополнил вопрос.

Riim, твой вариант не срабатывает с Infinity.

Kolyaj 03.07.2009 17:01

Я имел в виду их пропускать или нет?

Octane 03.07.2009 17:04

Цитата:

Сообщение от Kolyaj
Я имел в виду их пропускать или нет?

Да

Riim 03.07.2009 17:04

Octane,
то две "m" то одна "i", что за фигня?

Цитата:

Сообщение от Octane
твой вариант не срабатывает с Infinity.

Это легко поправить если надо. Я обычно Infinity не учитываю.

Kolyaj 03.07.2009 17:08

Т.е. isNumber(Number.NEGATIVE_INFINITY) должен быть true?

Octane 03.07.2009 17:08

Цитата:

Сообщение от Riim
то две "m" то одна "i", что за фигня?

Сорри, поправил.

Цитата:

Сообщение от Kolyaj
Т.е. isNumber(Number.NEGATIVE_INFINITY) должен быть true?

false

блин без бесконечности все красивее выходило :(

Kolyaj 03.07.2009 17:11

Понятно, пойду помолчу :)


Часовой пояс GMT +3, время: 07:27.