问题:我一直以来对自执行匿名函数就不是太理解尤其对其写法(function(){})()感觉很困惑。现在对这种写法,为什么这样写有了一个相对清晰的认识。
大家想看一个代码:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>self executing anonymous function</title> 6 </head> 7 <body> 8 <script> 9 //定义一个函数表达式 10 var test=function () { 11 alert("test"); 12 } 13 //调用test()函数。 14 test(); 15 </script> 16 </body> 17 </html>
这段代码等价于下面这段:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>self executing anonymous function</title> </head> <body> <script> //定义一个函数表达式,并调用它。 var test=function () { alert("test"); }(); </script> </body> </html>
可以看到,第二段代码只是在匿名函数后面直接加上一个括号,相当于第一段代码的test();
那么自执行匿名函数的形式(function(){})(); 其实就相当于test()。所谓的自执行,只是加了最外层的括号。调用了里面写的匿名函数。
把上述代码改成自执行匿名函数的代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>self executing anonymous function</title> </head> <body> <script> //定义一个函数表达式,并调用它。 (function () { alert("test"); })(); </script> </body> </html>