JS:javascript 函數后面有多個小括號是怎么回事?f( )( )( )...


有時我們看見js函數后面跟着多個小括號是怎么回事?f( )( )( )...

f()意思是執行f函數,返回子函數

f()()執行子函數,返回孫函數

f()()()執行孫函數

()()表示定義並執行,使用時不用再單獨調用執行了

但注意,如果想這樣執行,函數結構必須是這樣,f的函數體里要return 子函數,子函數里要return 孫函數,如果沒有return關鍵字,是不能這樣連續執行的,會報錯的。

舉個例子:k是f的子函數,return子函數k,所以f()()能連續執行。

 <script>
    var i=1;
    function f(){
        i++;
        console.log("-------------  :  "+i)
        return k;
        function k() {
            return "I love you!"
        }
    }
    f();
    console.log("111111111111");
    f()();
    alert(f()());
</scirpt>

 

結果如圖:

 

 

 

()()表示定義並執行,使用時不用再單獨調用執行了,當只有一個括號時:(function(){}),只是定義了一個函數不會執行,再加一個括號才會自己執行。

如下面:(function(){...} )(); 此函數是個無名函數可自動執行,f()() 是執行子函數返回孫函數 ,即執行第一個函數(括號)中的 function f(), 而第一個函數中又聲明了 function k() 及執行了k()

<script>
var i=1;
 (function f(){
        i++;
        console.log("-------------  :  "+i)
        // return k;
        function k() {
          console.log("------- :  "+i);
            return "I love you!"
        }
      k();
  })();
</script>

----------或者---------
<script>
var i=1;
 (function f(){
        i++;
        console.log("-------------  :  "+i)
        // return k;
       var two= function(){
          console.log("------- :  "+i);
            return "I love you!"
        }
      two();
  })();
</script>

---------不執行的反例--------
只有一個括號(function(){};)
<script>
var i=1;
 (function f(){ i++; console.log("------------- : "+i) // return k; function k() { console.log("------- : "+i); return "I love you!" } k(); }); </script>

 


免責聲明!

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



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