f()意思是執行f函數,返回子函數
f()()執行子函數,返回孫函數
f()()()執行孫函數
()()表示定義並執行,使用時不用再單獨調用執行了
但注意,如果想這樣執行,函數結構必須是這樣,f的函數體里要return 子函數,子函數里要return 孫函數,如果沒有return關鍵字,是不能這樣連續執行的,會報錯的。
舉個例子:k是f的子函數,return子函數k,所以f()()能連續執行。
1 <script> 2 var i=1; 3 function f(){ 4 i++; 5 console.log("------------- : "+i) 6 return k; 7 function k() { 8 return "I love you!" 9 } 10 } 11 f(); 12 console.log("111111111111"); 13 f()(); 14 alert(f()()); 15 </scirpt>
結果如圖:
()()表示定義並執行,使用時不用再單獨調用執行了,當只有一個括號時:(function(){}),只是定義了一個函數不會執行,再加一個括號才會自己執行。
如下面:(function(){...} )(); 此函數是個無名函數可自動執行,f()() 是執行子函數返回孫函數 ,即執行第一個函數(括號)中的 function f(), 而第一個函數中又聲明了 function k() 及執行了k()
1 <script> 2 var i=1; 3 (function f(){ 4 i++; 5 console.log("------------- : "+i) 6 // return k; 7 function k() { 8 console.log("------- : "+i); 9 return "I love you!" 10 } 11 k(); 12 })(); 13 </script> 14 15 ----------或者--------- 16 <script> 17 var i=1; 18 (function f(){ 19 i++; 20 console.log("------------- : "+i) 21 // return k; 22 var two= function(){ 23 console.log("------- : "+i); 24 return "I love you!" 25 } 26 two(); 27 })(); 28 </script>---------不執行的反例--------只有一個括號(function(){};)
1 <script> 2 var i=1; 3 (function f(){ 4 i++; 5 console.log("------------- : "+i) 6 // return k; 7 function k() { 8 console.log("------- : "+i); 9 return "I love you!" 10 } 11 k(); 12 }); 13 </script>
參考文章:https://www.cnblogs.com/forforever/p/12372326.html