It's a fairly common trick used to coerce a value to a boolean type, instead of using (bool). !window.attachEvent would negate the truth value of window.attachEvent, giving you a boolean; !!window.attachEvent negates that, giving you the original truth value but as a boolean instead of the type of window.attachEvent
I dont understand whats the difference between
!!window.attachEventand using justwindow.attachEvent.
The key of understanding this, is to know that the Boolean Logical Operators can return an operand, and not a Boolean result necessarily:
The Logical AND operator (&&), will return the value of the second operand if the first is truly:
true && "foo"; // "foo"
And it will return the value of the first operand if it is by itself falsy:
undefined && "anything"; // undefined
NaN && "anything"; // NaN
0 && "anything"; // 0
So, in the snippet !!window.attachEvent && !isOpera, we already know that isOpera is a boolean value, !! will just make sure that Browser.IE is a boolean result also.
An example: let's say we are in Firefox, window.attachEvent is undefined and !isOpera is true, if you don't use the double negation, Browser.IE would be undefined instead false.