我们知道,在一般情况下,函数必须先调用才能执行,如下所示,我们定义了一个函数,并且调用,
function fn(){
console.log(1);
}
fn();
打印结果为:
如果不调用的话,我们打印的结果永远不会显示。
所以这里就会提到我们的立即执行函数,所谓立即执行函数,就是不需要调用,立马就能执行的函数。
立即执行函数有两种最常见的写法:
(function(){})()
(function(){}())
举个例子:
(function fn(){
console.log(2);
})()
打印结果为:
打印成功。
立即执行函数中的第二个小括号就相当于调用函数,我们同样可以给立即执行函数传参数,,将我们要传递的参数写在第二个()里面,作为实参,如下:
(function fn(a,b){
console.log('a+b='+a+b);
})(1,2)
打印结果为:
第二种立即执行函数使用方法和第一种基本相似,不在赘述。
需要注意的是:如果有多个立即执行函数,他们之间需要逗号分隔,否则会报错。同时,在立即执行函数里面,也可以采用匿名函数的形式书写。
那么立即执行函数有什么作用或者好处呢?
它最大的作用就是独立创建了一个作用域。我们知道,javascript 中没有私有作用域的概念,如果在多人开发的项目上,在全局或局部作用域中声明了一些变量,可能会被其他人不小心用同名的变量给覆盖掉,而立即执行函数里面的变量都是局部变量,不会有命名冲突的情况。