常见的函数长这个样子

function foo() { console.log(123); }
foo();  //  输出:  123

这是个普普通通的函数声明,在结尾不需要";",你需要通过foo()来调用它,函数才会执行。

!function foo(){ console.log(123); }   //输出:  true

是一个表达式,但不会调用函数,于是再在结尾加上()来调用函数,这样

!function foo(){ console.log(123); }()
//输出:
//123
//true

因为()优先于!,所以会先执行函数,然后才进行非操作。
在函数体内如果无需调用自身,那么函数名都可以省了

!function(){ console.log(123); }()
//输出:
//123
//true

这样做也只是比(function(){})()节省了一个字节,而且理解起来不是很容易。


Doyle
844 声望16 粉丝

前端, angular, vue