浅谈JavaScript之function用括号包起来

(function a(){}) (命名函数表达式)会返回这个函数(不会执行),但是在括号外面无法调用该函数,需要一个变量接收这个函数,var fun = (function a(){}),一般这个用在递归上,比如

1 var fact = (function f(num){  
2       if(num === 1 )
3           return 1;
4       else 
5           return num * f(num - 1);
6       })

 

1.function a(){}(函数声明)返回undefined(不会执行),仅仅是函数声明(声明提前)

2.var res = function a(){}() (函数表达式),立即执行该函数,必须使用一个变量接收返回值,否则报错。

3.(function a(){})() (函数表达式),立即执行该函数,不必须使用变量接收。

 

示例代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script>
 9         //1.函数声明,不会执行。
10         function a() {
11             alert("函数a");
12         }
13 
14         //2.函数表达式,立即执行该函数,必须使用一个变量接收返回值,否则报错。
15         var res = function b() {
16             alert("函数b");;
17         }();
18 
19         //3.函数表达式,立即执行该函数,不必须使用变量接收。
20         (function c() {
21             alert("函数c")
22         })();
23     </script>
24 </head>
25 <body>
26 </body>
27 </html>

 

 总结

以上不同结果出现的原因是因为函数表达式和函数声明的区别。

posted @ 2019-04-14 21:58  冒牌工程师  阅读(1688)  评论(0编辑  收藏  举报