! javascript中的前一个函数?

时间:2011-03-24 16:47:16

标签: javascript

  

可能重复:
  What does the exclamation mark do before the function?

我今天第一次看到了这样一个格式化的函数:

!function(){}();

前面的感叹号是什么?我认为它的功能与:

相同
(function(){})();

但是......这里发生了什么?

3 个答案:

答案 0 :(得分:43)

前面的!接受un-parseable语句,并允许JS引擎解析它,然后返回true。

function(){}();
SyntaxError: Unexpected token (

!function(){}();
>>true

答案 1 :(得分:13)

它只是让JavaScript解析器将其解析为表达式,这是执行它所必需的。

答案 2 :(得分:12)

我试过了,它回归正确。 该函数返回undefined!undefined为真。

!function(){}();
^          ^ ^
C          A  B
  • 甲。 function(){}是一个空的匿名函数
  • B中。 ()执行函数(A),返回undefined
  • ℃。 !否定undefined,后者变为true

我认为他们将这个技巧用于代码高尔夫或混淆代码。

实际使用

是一种不好的做法

在浏览器地址栏中尝试javascript:alert(!function(){}())