Possible Duplicate:
What does the exclamation mark do before the function?
I ran across a function definition style that is new to me while browsing the Emile animation library:
!function () {
// do something
}();
I'm familiar with:
- Function expressions:
var foo = function (){}
- Named function expressions:
var foo = function bar(){}
- Function declarations:
function foo(){}
- Immediate functions:
var foo = function (){}()
orvar foo = (function (){})()
The snippet above uses immediate function invocation (for variable scoping, I assume), but the ! is what's throwing me off. JSLint is happy with it, so it must be kosher. What does it do?