Как посчитать странное выражение (из теста с UpWork)?
UPD: разбор именно вашего случая
TLDR - комментированный jjencode
Описание порядка действий, type conversion table++[[]][+[]]+[+[]]
Два слагаемых: ++[[]][+[]] и [+[]]
Первое слагаемое равно единице, т.к. первая пара квадратных скобок это литерал массива с единственным элементом - пустым массивом, вторая пара - обращение к этому массиву по индексу +[], то есть 0. По индексу 0 лежит пустой массив, в виду инкремента он приводится к числу (получается 0) и добавляется единица, получается 1
Второе слагаемое это литерал массива с единственным элементом 0.
То есть складываются единица и [0], 1+[0].
Единственная загадка это почему в этой операции [0] приводится к строке. Было бы логично если бы в операции сложения единицы и массива массив приводился к примитиву с PreferredType равным "number", но почему-то получается строка. Большое спасибо было бы тому человеку, который бы объяснил этот момент в спецификации.
вот еще код посложнее: pastebin.com/F7QYajdu
вот разбор к нему: https://habrahabr.ru/post/312172/