自调用函数的定义:
废话不多说,上代码。
//正常函数声明
var fn1 = function(parmater1,paermater2){
//函数体
console.log('正常函数声明');
};//尽量习惯性写;不然就像在这里,即便不调用fn1()同样会输出 正常函数声明
//正常函数调用,如5、7两行都不写;会报错。不过如果7行整行不写不会报错,反而会直接调用fn1()
fn1();//控制台:正常函数声明
// 自调用函数形式1
(function () {
console.log('自调用函数1');
})();//这里;不写同样会报错
//控制台:自调用函数1
//自调用函数形式2
(function(){
console.log('自调用函数2');
}());
//控制台:自调用函数1
注意点:1.自调用函数是隐式函数,无法通过赋值给变量来调用方法,
var fn2 = (function(){
console.log('自调用函数2');
}());
//fn2(); //这样做会报错
console.log(fn2); //输出结果为undefined
2.自调用函数运行后立即释放函数空间,无法再度调用。详情请跳转JavaScript中的函数自调用
3.自调用函数虽然无法赋给变量,但却可以通过return将返回值赋给变量。通过这个特点,我们可以用来做闭包
var fn3 = (function(){
//局部变量写在这里,可以减少全局变量的使用。
return function(){
console.log('个人理解:闭包就是把函数当作返回值,赋值给变量');
}
}());
console.log(fn3);//输出是一个函数体,即fn3内返回的函数。
fn3(); //控制台:个人理解:闭包就是把函数当作返回值,赋值给变量
最后附带链接:
释放函数空间涉及到堆和栈,链接如下: