最近看JS高级教程,几次遇到立即执行函数这个名词,对小白来说,不懂这是什么,于是本着不懂就问的原则我去查了查这个立即执行函数。
var rob = function(nums) {
if(nums.length === 1){
return nums[0];
}
else if(nums.length === 2){
return Math.max(nums[0],nums[1]);
};
};
上面这种写法,我们使用函数表达式初始化了一个函数。另一种就是使用函数声明来定义函数,如下:
function sum (num1, num2){
return numm1 + num2;
}
上面两个示例写的函数还并没有执行,为什么呢?因为我们只是定义了一个函数,要想使用函数就要调用函数,才会执行这个函数。如下
sum (1,2);
rob([7,8]);
那么立即执行函数呢,其实也是需要定义函数再调用的,不同的是,立即执行函数在定义时使特殊语法告诉了解释器,这函数需要立即执行。其实这个特殊语法呢,只是将我们调用函数和定义函数放在了一起,为了保证语法不出错加上了一层()。
即立即执行函数的调用方式通常是将函数表达式、它的调用操作符、分组操作符放到一个括号内。
使用函数声明时以下写法都是正确的
(function foo(){/*...*/}());
(function foo(){/*...*/})();
!function foo() {/*...*/}();
+function foo() {/*...*/}();
-function foo() {/*...*/}();
~function foo() {/*...*/}();
如果使用函数表达式,那么外层括号就不需要了,如下写法都是正确的:
void function(){/*...*/}();
var add = function(){/*...*/}();
下面就是我做实验的例子截图了!
函数定义不会执行
写成立即执行函数后就发现函数立刻就被调用了