! preceding function in javascript?

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

它只是使JavaScript解析器将其解析为一个表达式,这对执行它是必需的。


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

    链接地址: http://www.djcxy.com/p/2868.html

    上一篇: jQuery多个事件触发相同的功能

    下一篇: ! 前面的函数在javascript中?