1.6.2 立即调用的函数表达式
在JS里,function在定义的时候就可以通过在后面加一个小括号的形式立即进行调用。比如:
- (function () { /* code */ } ()); // 推荐使用这个
- (function () { /* code */ })(); // 这个也是可以用的
- (function () { /* code */ } (1)); // 传入参数1
- (function () { /* code */ })(2); // 传入参数2
Bootstrap的所有的JS插件都使用了这个模式。比如在alert.js文件里有以下代码:
- +function ($) {
- "use strict";
- }(jQuery);
这个文件的意思是声明一个function,然后立即执行,并且在执行的时候传入jQuery对象作为参数。这么做的好处是,此时function内部的$已经是局部变量了,不会再受外部作用域的影响了。
function前面的+号和分号的功能是一样的,主要是防止定义了不符合规定的代码。比如上面的这段代码若没加+号,则代码连接在一起执行就会出错。这样就消除了出错的可能性。不习惯的话,改成这样也行:
- ;function ($) {
- "use strict";
- }(jQuery);
关于立即执行的函数表达式,请访问笔者的博客“深入理解JavaScript系列”里的第4篇,地址如下:http://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html。