Possible Duplicate:
What does the exclamation mark do before the function?
I saw a function formatted like this today for the first time:
!function(){}();
What is the preceding exclamation mark for? I assume it functions the same as:
(function(){})();
But... what's going on here?
The preceding !
takes the un-parseable statement, and allows it to to be parsed by the JS engine, which in turn returns true.
function(){}(); SyntaxError: Unexpected token ( !function(){}(); >>true
It simply makes the JavaScript parser parse it as an expression, which is necessary to execute it.
I've tried it, it returned true.
The function returns undefined
, and !undefined
is true.
!function(){}();
^ ^ ^
C A B
function(){}
is an empty anonymous function()
executes the function (A), returning undefined
!
negates undefined
, which becomes true
I think they used that trick for a code golf or an obfuscated code. It is a bad practice to practially use that
Try javascript:alert(!function(){}())
in your browser address bar
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With