Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.11.2019, 08:58
Профессор
Отправить личное сообщение для DDim1000 Посмотреть профиль Найти все сообщения от DDim1000
 
Регистрация: 20.10.2016
Сообщений: 160

Как проверить, содержит ли переменная число?
Здравствуйте!
Подскажите пожалуйста, как проверить, содержит ли переменная число?
Ответить с цитированием
  #2 (permalink)  
Старый 03.11.2019, 09:18
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,525

Точно:
typeof x === 'number'
Просто:
!isNaN(x)
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 03.11.2019, 09:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 27,604

DDim1000,
a === +a
Ответить с цитированием
  #4 (permalink)  
Старый 03.11.2019, 15:59
Профессор
Отправить личное сообщение для DDim1000 Посмотреть профиль Найти все сообщения от DDim1000
 
Регистрация: 20.10.2016
Сообщений: 160

Сообщение от Aetae Посмотреть сообщение
Точно:
typeof x === 'number'
Просто:
!isNaN(x)
Так? Т.е., если х содержит число, то typeof возвратить - number? Я правильно понял?
var x;
 .....
 if (typeof x === 'number'){};
Ответить с цитированием
  #5 (permalink)  
Старый 03.11.2019, 16:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,564

Сообщение от DDim1000
если х содержит число, то typeof возвратить - number?
Смотря чего "хочется":
var a = 1, b = '1', c = +'1';
alert('a => '+typeof a+'\nb => '+typeof b+'\nc => '+typeof c)

Последний раз редактировалось laimas, 03.11.2019 в 16:54.
Ответить с цитированием
  #6 (permalink)  
Старый 03.11.2019, 19:56
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,525

DDim1000, если ты увернет что там конкретно число с типом "число" - да. Если там может быть строка или ещё что-нить похожее на число - используй второй вариант.
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 13.11.2019, 22:39
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 637

(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, хотя в переменной не число.
Ответить с цитированием
  #8 (permalink)  
Старый 13.11.2019, 23:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 27,604

Сообщение от Маэстро
Фокус с плюсиком используется часто, но это в ряде случаев дает ложный результат
можно пример?
Ответить с цитированием
  #9 (permalink)  
Старый 13.11.2019, 23:08
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 637

Сообщение от рони Посмотреть сообщение
можно пример?
В примерах с 5 по 8 плюсование всегда сообщает о number, хотя в переменной не число.
Ответить с цитированием
  #10 (permalink)  
Старый 13.11.2019, 23:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 27,604

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как проверить корректность поля e-mail? daniilino Общие вопросы Javascript 9 15.05.2012 16:50
Переменная от переменной или как к имени переменной конкатенировать значение другой Aderba jQuery 5 12.11.2008 15:25
как проверить поддеружет браузер определенное событие? GOll Элементы интерфейса 9 24.07.2008 14:40
Как прибавлять число к числу? Forgott Общие вопросы Javascript 9 06.05.2008 08:47