淺談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>

 

 總結

以上不同結果出現的原因是因為函數表達式和函數聲明的區別。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM