! preceding function in javascript? [duplicate]

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?

Answers:

Answer

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
Answer

It simply makes the JavaScript parser parse it as an expression, which is necessary to execute it.

Answer

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), returning undefined
  • C. ! 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

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.