Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как проверить, содержит ли переменная число? (https://javascript.ru/forum/dom-window/78774-kak-proverit-soderzhit-li-peremennaya-chislo.html)

DDim1000 03.11.2019 08:58

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

Aetae 03.11.2019 09:18

Точно:
typeof x === 'number'
Просто:
!isNaN(x)

рони 03.11.2019 09:24

DDim1000,
a === +a

DDim1000 03.11.2019 15:59

Цитата:

Сообщение от Aetae (Сообщение 514815)
Точно:
typeof x === 'number'
Просто:
!isNaN(x)

Так? Т.е., если х содержит число, то typeof возвратить - number? Я правильно понял?
var x;
 .....
 if (typeof x === 'number'){};

laimas 03.11.2019 16:52

Цитата:

Сообщение от DDim1000
если х содержит число, то typeof возвратить - number?

Смотря чего "хочется":
var a = 1, b = '1', c = +'1';
alert('a => '+typeof a+'\nb => '+typeof b+'\nc => '+typeof c)

Aetae 03.11.2019 19:56

DDim1000, если ты увернет что там конкретно число с типом "число" - да. Если там может быть строка или ещё что-нить похожее на число - используй второй вариант.

Маэстро 13.11.2019 22:39

(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);

В примерах с 5 по 8 плюсование всегда сообщает о number, хотя в переменной не число.

рони 13.11.2019 23:01

Цитата:

Сообщение от Маэстро
Фокус с плюсиком используется часто, но это в ряде случаев дает ложный результат

можно пример?

Маэстро 13.11.2019 23:08

Цитата:

Сообщение от рони (Сообщение 515478)
можно пример?

В примерах с 5 по 8 плюсование всегда сообщает о number, хотя в переменной не число.

рони 13.11.2019 23:17

Маэстро,
может быть нужно === а не ==?
пост #3


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