Сообщение от trikadin
|
Наткнулся на интересную штуку.
{} + [] // 0
Кто без гугления сможет вспомнить, почему так?)
|
Спецификация же за гугление не считается?)
{} здесь - не литерал объекта, а пустой блок кода. Выходит так:
{}; +[];
Унарный оператор + приводит к числу аналогично Number, массивы (упрощенно) приводятся таким образом:
Number(array.toString());
Пустой массив тогда сперва приведется к пустой строке, затем пустая строка приведется к нулю. Итог выражения - ноль.
Вот так будет работать как ожидается:
({}) + []; //"[object Object]" + "" == "[object Object]"