搜尋

首頁  >  問答  >  主體

javascript - js匿名函數的其中三個書寫方式

以下是JS的匿名函數,這三種形式比較有什麼差別,各有什麼特色?

// 形式1
        (function(a){
            console.log(a);

        })(33)
        // 形式2
        !function(){
            console.log(2222222222)
        }()
        // 形式3
        (function(a){
            console.log(a);
        }(100))
漂亮男人漂亮男人2787 天前593

全部回覆(3)我來回復

  • 怪我咯

    怪我咯2017-05-19 10:41:41

    這三種寫法其實沒有本質上的區別,都是為了編譯器(解釋器)function(a){ console.log(a) }和()看作一個整體執行。應該更多的是習慣上的區別,我個人更喜歡第一種,感覺邏輯上更說的過去。有的人喜歡第二種,用()把整個函數呼叫括起來,這個可以更直白的表示這段程式碼是一個整體。聽說老外喜歡用!或void

    回覆
    0
  • 某草草

    某草草2017-05-19 10:41:41

    第一種是自執行函數的常用方式,括號內包裹的是函數體本身,意味著執行函數定義,傳回一個函數,緊接著後面的括號表示傳入參數,執行這個函數。
    第二種和第三種,其實是一樣的,分別使用!括号 『包裹』函數體加傳參部分,都表示執行這個程式碼區塊,執行程式碼區塊時,函數的名稱可以省略。
    第二種和第三種不同的地方就是前者沒有參數,回傳函數執行結果取非後的布林值,後者有參數,預設回傳函數回傳值。

    回覆
    0
  • 大家讲道理

    大家讲道理2017-05-19 10:41:41

    第一種運作最快
    後兩種好看

    回覆
    0
  • 取消回覆