Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 13.11.2019, 23:24
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Маэстро
1. тип переменной Number? - пример: 1
Проверяйте так — typeof x === "number"
или так — Number.isFinite(x)
или так — Object(x) instanceof Number

Сообщение от Маэстро
2. если смотреть человеческими глазами, то это число? пример: '1'
Проверяйте так — Number.isFinite(+x)

Сообщение от Маэстро
3. содержит ли (буквально содержит) число? пример: '1w'
Проверяйте так — isFinite(Number.parseInt(x))
или так — /^\d+/.test(x)

ЕЩЁ
Сообщение от рони
пост #3
Может проверяться что угодно, поэтому может быть исключение!

Последний раз редактировалось Malleys, 14.11.2019 в 00:02. Причина: Добалено для рони, проверь! И для Маэстро тоже!
Ответить с цитированием
  #12 (permalink)  
Старый 13.11.2019, 23:26
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от рони Посмотреть сообщение
Маэстро,
может быть нужно === а не ==?
в каком месте? если при проверке
var r1 = (a == x);
то нельзя. при var r1 = (a === x) javascript не произведет неявное преобразование типов и результат будет FALSE при x='1'.
Ответить с цитированием
  #13 (permalink)  
Старый 13.11.2019, 23:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Malleys,
Маэстро,
не понимаю что не так?
var a = null;
alert(a === +a);


var a = 5;
alert(a === +a);
Ответить с цитированием
  #14 (permalink)  
Старый 13.11.2019, 23:43
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от Malleys Посмотреть сообщение
Проверяйте так — isFinite(x)
isFinite(x) - неверно.
поставьте в x null, undefined или пустую строку и получите true (как будто это число, но это не число)
Ответить с цитированием
  #15 (permalink)  
Старый 13.11.2019, 23:49
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от рони Посмотреть сообщение
Malleys,
Маэстро,
не понимаю что не так?
var a = null;
alert(a === +a);


var a = 5;
alert(a === +a);
А при var a = '1'; ?
ответ будет false. но в строке число.
Ответить с цитированием
  #16 (permalink)  
Старый 13.11.2019, 23:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Маэстро
но в строке число.
в переменной строка!
думаю все варианты уже сказаны выше, кому что нужно то и выберет.
Ответить с цитированием
  #17 (permalink)  
Старый 14.11.2019, 00:03
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Маэстро, Number.isFinite(+x)

Ещё раз посмотрите сообщение №11
Ответить с цитированием
  #18 (permalink)  
Старый 14.11.2019, 00:06
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от рони Посмотреть сообщение
в переменной строка!
Вы имеете ввиду, что переменная имеет ТИП "строка" (string). Но в задаче спрашивается "Мы имеем число? или нет?" И не важно, что там строка. Именно в такой постановке я сталкивался с ситуацией чаще всего. В частности, при получении по API JSON/AJAX данных одну и ту же переменную могут сделать как числовой x=1, так и строковой x='1', могут поставить null, могут 0, или пустую строку.
Ответить с цитированием
  #19 (permalink)  
Старый 14.11.2019, 00:07
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от рони
не понимаю что не так?
try {
    var a = 5n;
    alert(a === +a);
} catch(error) {
    alert("Разные типы!");
}


Сообщение от Маэстро
"Мы имеем число? или нет?"
Все варианты рассмотрены в сообщении №11, читайте внимательно!
Ответить с цитированием
  #20 (permalink)  
Старый 14.11.2019, 00:21
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от Malleys Посмотреть сообщение
Маэстро, Number.isFinite(+x)
Ещё раз посмотрите сообщение №11
Посмотрел. Еще раз: для ситуации, когда в переменной строка, в которой прописано число, то это надо трактовать как число.
при var x = '1'; вариант Number.isFinite(+x) выдаст false.
а нужно true. поэтому
(parseInt(x) == x)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" 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