! preceding function in javascript? [duplicate]
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
- A.
function(){}
is an empty anonymous function - B.
()
executes the function (A), returningundefined
- C.
!
negatesundefined
, which becomestrue
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