关于函数声明:若是 function 是声明中的第一个词, 那么就是一个函数声明, 不然就是一个函数表达式。例如匿名函数这种形式,函数会被看成函数表达式而不是一个标准的函数声明来处理。javascript
(function(){ // 当即执行函数表达式 })()
这种表达式有另一种用途是倒置代码的运行顺序, 将须要运行的函数放在第二位, 在 IIFE执行以后看成参数传递进去。java
var a = 2; (function IIFE( def ) { def( window ); })(function def( global ) { var a = 3; console.log( a ); // 3 console.log( global.a ); // 2 });