匿名自执行函数最常见的作用是用于实现闭包的情况中。
匿名自执行函数还可以用于在js中模拟创建块级作用域,即如果使用匿名自执行函数将某些代码包裹起来可以实现块级作用域的效果,减少全局变量的数量,在匿名自执行函数执行结束后变量就会被内存释放掉,从而也会节省了内存。
闭包定义: 闭包是js的一种特性,我们可以通过闭包实现函数内外部的连接,并且可以使得函数的局部变量始终存在于内存中。
闭包就是定义在函数内部并且能够读取其他函数局部变量的函数。
function fun1(){ var str="外部函数变量"; function fun2(){ console.log(str); } return fun2;//在fun1函数内部返回 } var result=fun1(); result(); fun1()();
以上的代码片段就是一种闭包,我们在外部函数fun1()中定义了一个内部函数fun2(),并且在fun2()的内部使用了fun1()的变量,最后我们又把内部函数fun2()函数返回。
结合我们对闭包的定义:
外部函数------------------------------------------------->fun1()
外部函数变量------------------------------------------->str
内部函数------------------------------------------------->fun2()
1.匿名自执行函数的作用就是用于闭包和创建独立的命名空间两个方面
2.匿名函数可以简单理解为没有名字的函数,常见的场景一共就有4种
1 //1.匿名函数的第一种情形 2 var btn=document.querySelector("#btn"); 3 btn.onclick=function(){ 4 // alert("aaaaa"); 5 } 6 7 //2.匿名函数的第二种情形 8 setInterval(function(){ 9 // alert("bbbbb"); 10 }, 1000); 11 12 //3.匿名函数的第三种情形 13 var fun=function(){ 14 //alert("ccccc"); 15 } 16 fun(); 17 18 //4.匿名函数的第四种情形 19 var obj={ 20 name:"dddd", 21 say:function(){ 22 alert(this.name); 23 } 24 } 25 obj.say();
3.匿名自执行函数可以简单理解为可以自己执行的匿名函数,实现匿名自执行函数的方式一共有4种
1 //1.匿名函数的第一种实现方式 2 (function(data){ 3 // alert(data); 4 })("eee"); 5 6 //2.匿名自执行函数的第二种实现方式 7 (function(){ 8 // alert("fff"); 9 }()); 10 11 //3.匿名自执行函数的第三种实现方式 12 !function(data){ 13 // alert(data); 14 }("hhh"); 15 16 //4.匿名自执行函数的第四种实现方式 17 var fun=function(data){ 18 alert(data); 19 }("iii");