写法一
(function () {
console.log("aaa")
}());
写法二
(function () {
console.log("aa")
})();
原理
js中只有表达式才能被执行,如下:
var demo = function test() {
console.log("aa");
}();
以上代码“var demo = ”将函数定义转换为表达式,故可以直接之函数后面添加“()”符号直接执行,上面的立即执行函数通过对函数添加“()”将函数转换为函数表达式,故可以通过在函数末尾添加“()”立即执行函数,从而实现立即执行函数,以下代码也能将函数转化为表达式:
+function test() {
console.log("aa");
}();
-function test() {
console.log("aa");
}();
!function test() {
console.log("aa");
}();
立即执行函数参数传递
写法一
(function (a,b) {
console.log(a + b)
}(1,2));
写法二
(function (a,b) {
console.log(a + b)
})(1,2);
注意:有多个执行函数时,将执行函数后面添加“;”号,否则会执行出错,原因为在立即执行函数前边的函数调用结束后,由于JavaScript的不需要换行结束符的特性,环境会将前面的立即执行表达式和后边的立即执行表达式一同执行,把包裹匿名函数的’()'当做一个函数执行标志符,把匿名函数当做函数参数传送给后边的立即执行表达式的返回值执行。