Задачка из твиттера
+{} is NaN, why +[] is 0, +[1] is 1, but +[1,2] is NaN?
В топик призываются гуры стандартов )) |
Рискну предположить
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. :) |
subzey,
пожалуй ты прав. |
|
ECMA-262-3: 11.4.6 Унарный оператор +.
Вообще, может зависеть не только от toString(), но и от valueOf(), т.к. ToNumber (9.3/9.3.1) вызывает преобразование ToPrimitive. Соответственно, если переопределить toString/valueOf результат может варьировать. Цитата:
Цитата:
|
Dmitry A. Soshnikov,
угу, я про toString не подумал сначал. |
Часовой пояс GMT +3, время: 08:27. |