用法:
;!function(){}();
解释:
js中分号表示语句结束,在开头加上,是为了在压缩的时候和前面的代码分隔一下,表示一个新的语句开始。
而将逻辑非运算符加在函数定义的前面,是调用这个函数,并对返回值进行逻辑非运算。
这是构建立即执行函数的一种方法,其他方式还有:
(function(){})();
(function(){}());
注:
其实无论是括号,还是感叹号,都是让一个函数声明语句变成了一个表达式。
赋值,逻辑,甚至是逗号,各种操作符都可以告诉解析器,这个不是函数声明,它是个函数表达式。
并且,对函数一元运算可以算的上是消除歧义最快的方式,感叹号只是其中之一。
甚至void
,new
,delete
都能很好的工作。
void function(){alert()}() // undefined
new function(){alert()}() // Object
delete function(){alert()}() // true