Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.09.2016, 18:26
Новичок на форуме
Отправить личное сообщение для ochen Посмотреть профиль Найти все сообщения от ochen
 
Регистрация: 20.09.2016
Сообщений: 4

Hедопонимание с typeof
Приветствую.
Объясните, пожалуйста, почему буква превращается в цифру, когда typeof?
Я, вероятно, не понимаю многого, но тут совсем не понимаю.

var str = 'd23';
console.log(isNaN( +str[0])); // true 
console.log(isNaN( str[0])); // true
 
 console.log(typeof str[0] == "number"); //false
 console.log(typeof +str[0] == "number"); //true
Ответить с цитированием
  #2 (permalink)  
Старый 20.09.2016, 19:09
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

ochen, Преобразование к числу
Ответить с цитированием
  #3 (permalink)  
Старый 20.09.2016, 23:17
Новичок на форуме
Отправить личное сообщение для ochen Посмотреть профиль Найти все сообщения от ochen
 
Регистрация: 20.09.2016
Сообщений: 4

Если преобразовать строку в число использую унарный "+" или number(), то результатом является NaN. Т.е.функция isNaN("какая-нибудь строка") возвращает true, т.к. это не может быть приведену к числу. Почему же typeof говорит, что это число, если это NaN. Я не могу понять именно этот момент.
Ответить с цитированием
  #4 (permalink)  
Старый 20.09.2016, 23:22
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

ochen,
потому что NaN относится к Number))) Это типа число, которое нифига не число. Или как в матанализе - неопределенность
Ответить с цитированием
  #5 (permalink)  
Старый 20.09.2016, 23:26
Новичок на форуме
Отправить личное сообщение для ochen Посмотреть профиль Найти все сообщения от ochen
 
Регистрация: 20.09.2016
Сообщений: 4

Как вообще можно это понять, если везде написано, что NaN это НЕ ЧИСЛО. Даже в описание number.NaN написано, что это не число. Т.е. typeof считает его числом, но нигде не написано, что это число? Или это где-то в очень сложных книгах?
Ответить с цитированием
  #6 (permalink)  
Старый 20.09.2016, 23:43
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

ochen,
Умом Россию не понять. Почитай экму
Ответить с цитированием
  #7 (permalink)  
Старый 20.09.2016, 23:54
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

ochen, в этом есть некий смысл... все относительно... чем оно должно быть по твоему если это некий результат математической операции... относительно результата не число, относительно типа число... как и Infinity... бесконечность...
alert(typeof Infinity)
Ответить с цитированием
  #8 (permalink)  
Старый 20.09.2016, 23:58
Новичок на форуме
Отправить личное сообщение для ochen Посмотреть профиль Найти все сообщения от ochen
 
Регистрация: 20.09.2016
Сообщений: 4

Да, вот так уже более точно. Вероятно, я бы мог нагуглить ответ, если бы понимал, как меня обманывает NaN. Джуваскрипт стал более понятен. Спасибо.
Ответить с цитированием
  #9 (permalink)  
Старый 21.09.2016, 22:36
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

А зачем нужен NaN? Мне кроме вреда эта шняга ничего не принесла. Покажите плес пользу.
Ответить с цитированием
  #10 (permalink)  
Старый 21.09.2016, 23:34
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

warren buffet,
Если говорить о практике - он в основном нужен чтобы условия проверяющие результаты математических операции в случае ошибки оных всегда возвращали false. Это удобно во многих случаях: не приходится писать дополнительные проверки и лишнюю обработку ошибок. Но как и с любым подобным удобством, это усложняет отладку.

Суть NaN в том, что он не равен ничему, даже самому себе.)
alert(NaN === NaN)
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
typeof возвращает значение undefied у строки,которая содержится в ячейке таблицы Misterdark Events/DOM/Window 8 16.04.2016 08:03
Уточненное определение типа объекта - typeOf _0_ Ваши сайты и скрипты 4 01.09.2014 17:12
Пожалуйста, кому не лень, посмотрите код, что он примерно делает?? arsen97 Общие вопросы Javascript 1 15.08.2014 16:51
Кроссбраузерная обертка AttachEvent Dim@ Ваши сайты и скрипты 13 21.08.2012 21:21
Javascript quiz · Perfection kills Octane Оффтопик 49 16.02.2010 12:46