Массив JavaScript для номера
Возможный дубликат:
Можете ли вы объяснить, почему ++ [[]] [+ []] + [+ []] = 10
Мне интересно что-то в течение нескольких дней... Я знаю, что унарный плюс в JavaScript сначала преобразует его в число. Я применяю + к пустому массиву и получаю следующий результат:
+[] == 0
Когда я это сделаю:
+[1] == 1
Но:
+[1,2] == NaN
Последние две вещи почти понятны, но почему пустой массив равен 0?!
Связано ли это с:
[] == false
Несколько раз ECMAScript заставляет меня задаться вопросом...
alert([![]+[]][+[]][+[]]+[![]+[]][+[]][+!+[]]+[!+[]+[]][+![]][+![]]+[![]+[]][+[]][+!+[]]+[![]+[]][+[]][+!+[]+!+[]]+' '+(![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]);
С уважением!
Ответы
Ответ 1
Строковая форма пустого Array
представляет собой пустую строку:
> [].toString()
""
Унарный оператор +
преобразуется в объекты Number
, поэтому он преобразует пустую строку в 0
:
> Number("")
0
Это объясняет, почему +[] == 0
истинно.