{}[true] is [true] and ![true] should be false.
{}[true]
[true]
![true]
false
So why does !{}[true] evaluate to true
!{}[true]
true
Because {}[true] does not return true, but undefined, and undefined is evaluated as false:
undefined
http://jsfiddle.net/67GEu/
'use strict'; var b = {}[true]; alert(b); // undefined b = !{}[true]; alert(b); // true