Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.12.2009, 10:39
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Задачка из твиттера
+{} is NaN, why +[] is 0, +[1] is 1, but +[1,2] is NaN?

В топик призываются гуры стандартов ))
Ответить с цитированием
  #2 (permalink)  
Старый 08.12.2009, 10:55
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Рискну предположить
Number(Object().toString()); // = Number("[objectObject]") = NaN
Number(Array().toString()); // = Number("0") = 0
Number(Array(1).toString()); // = Number("1") = 1
Number(Array(1, 2).toString()); // = Number("1,2") = NaN

Кстати, parseInt([1, 2]) вернет-таки значение 1.
Ответить с цитированием
  #3 (permalink)  
Старый 08.12.2009, 11:28
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

subzey,
пожалуй ты прав.
Ответить с цитированием
  #4 (permalink)  
Старый 08.12.2009, 11:32
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

http://habrahabr.ru/blogs/javascript...omment_2233654 ah?
__________________
Тонкости ECMAScript
Ответить с цитированием
  #5 (permalink)  
Старый 08.12.2009, 11:57
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

ECMA-262-3: 11.4.6 Унарный оператор +.

Вообще, может зависеть не только от toString(), но и от valueOf(), т.к. ToNumber (9.3/9.3.1) вызывает преобразование ToPrimitive.

Соответственно, если переопределить toString/valueOf результат может варьировать.

Сообщение от subzey
Number(Array().toString()); // = Number("0") = 0
= Number("") = 0

Сообщение от subzey
Кстати, parseInt([1, 2]) вернет-таки значение 1.
А там тоже первым делом toString() вызывается
__________________
Тонкости ECMAScript
Ответить с цитированием
  #6 (permalink)  
Старый 08.12.2009, 12:01
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Dmitry A. Soshnikov,
угу, я про toString не подумал сначал.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непростая задачка с таблицей GreatRash Элементы интерфейса 0 28.10.2009 14:14
Небольшая задачка Maksim jQuery 4 30.09.2009 19:43
задачка на подумать x-yuri Оффтопик 16 11.06.2009 12:39
Задачка: вывод div по ссылке alt5000 Элементы интерфейса 19 28.10.2008 21:21