! 前面的函数在javascript中?

可能重复:
该功能之前感叹号做了什么?

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

!function(){}();

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

(function(){})();

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


前面! 采用不可解析的语句,并允许它由JS引擎解析,而JS引擎则反过来返回true。

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

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

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


我试过了,它回复了真实。 该函数返回undefined ,并且!undefined为true。

!function(){}();
^          ^ ^
C          A  B
  • A. function(){}是一个空的匿名函数
  • B. ()执行函数(A),返回undefined
  • C. ! 否定undefined ,这成为true
  • 我认为他们使用这个技巧来获得代码高尔夫或混淆代码。 实际使用它是一种不好的做法

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

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

    上一篇: ! preceding function in javascript?

    下一篇: What is the purpose of the HTML "no