立即执行函数
- (function(){}())
- (function(){})()
这两种写法,都是一种立即执行函数的写法,即IIFE (Immediately Invoked Function Expression)。这种函数在函数定义的地方就直接执行了。
IIFE函数的调用方式通常是将函数表达式、它的调用操作符、分组操作符放到一个括号内,来告诉解释器这里有一个需要立即执行的函数。
在需要表达式的场景下,就不需要用括号括起来了:
void function(){/*...*/}();
var foo = function(){/*...*/}();
true && function () { /*...*/ }();
0, function () { /*...*/ }();
对于IIFE函数,也可以给它们传入参数,例如
(function foo(arg1,arg2,...){...}(param1,param2,...));
对于常见的(function($){…})(jQuery);即是将实参jQuery传入函数function($){},通过形参$接收。
DOM加载完成后执行的回调函数
$(function(){/…/});是$(document).ready(function(){/*…*/})的简写形式,是在DOM加载完成后执行的回调函数,并且只会执行一次。
在一个页面中不同的js中写的$(function(){/*…*/});函数,会根据js的排列顺序依次执行。