Показать сообщение отдельно
  #1367 (permalink)  
Старый 14.08.2015, 09:21
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Сообщение от trikadin Посмотреть сообщение
Наткнулся на интересную штуку.

{} + [] // 0

Кто без гугления сможет вспомнить, почему так?)
Спецификация же за гугление не считается?)

{} здесь - не литерал объекта, а пустой блок кода. Выходит так:
{}; +[];


Унарный оператор + приводит к числу аналогично Number, массивы (упрощенно) приводятся таким образом:
Number(array.toString());

Пустой массив тогда сперва приведется к пустой строке, затем пустая строка приведется к нулю. Итог выражения - ноль.

Вот так будет работать как ожидается:
({}) + []; //"[object Object]" + "" == "[object Object]"

Последний раз редактировалось Erolast, 14.08.2015 в 09:26.
Ответить с цитированием