函数的声明有两种主要的方式
function show(){
//函数体
}
或者
var s = function show(){
//函数体
}
如果这样定义,解析器是无法理解的:
function show(){
//函数体
}();
因为这是一个定义函数
但是如果我们更改书写方式:
(function show(){
//函数体
})();
这种方式就是可以执行的,这是调用匿名函数,其内部的原理是:
使用括号定义函数,解析器将会以函数表达的方式去调用定义函数
通过这句话我们可以理解,任何一个将函数变成一个函数表达式的方法都可以使得解析器正确的调用函数。
以此类推:
!function
这种方式也就不难理解了。
当然既然!是可以的,+、-、||这些方式也都是行得通的。