@gdadsriver TBH, I don't know the exact reason, but what I'm guessing is function(){}() is a declaration syntax, and ofcourse it's a wrong way to declare a function, and !function(){}() is an expression to be evaluated, so it evaluates each and every component of the expression in a proper order, probably that might be the reason? apart from that, honestly I've no explanation to it, sorry. :(
Gautham
How do you comfort a JavaScript bug? You console it.. Hahaha...... Ok.
Self-Invoking function, returning a falsey value 'undefined', !falsey is true.