Doing ({} + [])
производит строку [object Object]
, которая когда принуждают булево является истинным значением.
Почему он рассматривает это как конкатенацию строк, когда они заключены в круглые скобки и число, когда оно не завернуто, я пытаюсь выяснить.
Обновление: Я думаю, что понял. Этот трюк происходит, когда код на глобальном уровне, т. Е. Не как назначение или как аргумент. Что, вероятно, происходит, это интерпретация {}
как блока, а не объекта.
Если вы наберете { var x = 4; } +[]
в свою консоль, вы получите тот же результат, что и {}+[]
. Где, как если бы вы разместили его внутри набора круглых скобок, он заставляет компилятор интерпретировать интерьер как выражение, то есть Object
плюс Array
, который создает строку.
Мое предположение заключается в том, что это изменение частично связано с изменением объема обработки за счет let
.
добро пожаловать на javascript! – Fallenreaper
Что-то связанное с данными? –
или попробуйте '[] + []' и '{} + {}' – AmmarCSE