+3  A: 

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

Michael Mrozek
Matt Briggs
@Matt, the real question was "Why use `!!window.attachEvent )
CMS
Michael Mrozek
+3  A: 

I dont understand whats the difference between !!window.attachEvent and using just window.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.

CMS
+1 for excellent explanation with example. too good!
Rajat