(![]+[])[+!+[]] evaluates to "a" as well. It looks like it turns it into an array twice.
It goes +!+[] === 1 then [+!+[]] === [1] then +[[+!+[]]] === 1 then [+[[+!+[]]]] === [1]
(Ok, tried it, it evaluates plenty of numbers on its own already which increases the character set. Not nice).
Also confusing that "false"[[1]] works.
(![]+[])[+!+[]] evaluates to "a" as well. It looks like it turns it into an array twice.
It goes +!+[] === 1 then [+!+[]] === [1] then +[[+!+[]]] === 1 then [+[[+!+[]]]] === [1]