2013-07-31 49 views
8

我被檢查出的has.js代碼,被這裏的初始分號不解:IIFE之前分號的用途是什麼?

;(function(g){ 
    // code 
}()(this); 

據我所知,它也絕對沒有什麼。它不會將函數放在表達式中,如()!所示:(function(){}())!function(){}()。這似乎只是一條空白線條的線條。

這個分號的用途是什麼? OCD希望在IIFE的開始和結束之間對稱嗎? :)

+0

對,笨蛋,謝謝! – mwcz

+0

沒問題@mwcz^_ ^ – Neal

回答

21

這是爲了防止任何以前的代碼執行您的代碼作爲函數的參數。

mybrokenfunction = function(){ 

} //no semicolon here 
(function(g){ 


})(this); 

將與您的匿名函數作爲它的參數執行mybrokenfunction:

mybrokenfunction = function(){}(function(g){})(this); 

如果你能保證有你之前不會無端接(無分號)功能,你可以省略起始分號,但是你不能,所以把這個額外的分號放進去就更安全了。