{}[true] is [true] and ![true] should be false.
So why does !{}[true] evaluate to true
Because
{}[true]
evaluates to undefined, and !undefined is true.
From @schlingel:
true is used as key and {} as hash map. There doesn't exist an property with the key true so it returns undefined. Not undefined is true, as expected.
Console session (Node.js [0.10.17]):
> {}[true]
undefined
> !{}[true]
true
> [true]
[ true ]
> ![true]
false
>
However, in the Google Chrome console:
> !{}[true]
true
So, no inconsistencies. You're probably using an old version of the JavaScript VM. For those who need further evidence:

With Firefox, it also evaluates to true:
