私はhas.jsのコードを調べていて、最初のセミコロンに戸惑いました:
;(function(g){
// code
}()(this);
私の知る限り、それはまったく何もしません。()
または!
do:(function(){}())
またはのように関数を式の位置に配置しません!function(){}()
。空行のラインエンダーに過ぎないようです。
このセミコロンの目的は何ですか? IIFEの始まりと終わりの間の対称性に対するOCDの欲求? :)
私はhas.jsのコードを調べていて、最初のセミコロンに戸惑いました:
;(function(g){
// code
}()(this);
私の知る限り、それはまったく何もしません。()
または!
do:(function(){}())
またはのように関数を式の位置に配置しません!function(){}()
。空行のラインエンダーに過ぎないようです。
このセミコロンの目的は何ですか? IIFEの始まりと終わりの間の対称性に対するOCDの欲求? :)
以前のコードが関数への引数としてコードを実行するのを防ぐためにあります。
すなわち
mybrokenfunction = function(){
} //no semicolon here
(function(g){
})(this);
匿名関数を引数として mybrokenfunction を実行します。
mybrokenfunction = function(){}(function(g){})(this);
自分の関数の前に終了していない (セミコロンのない) 関数が存在しないことを保証できる場合は、最初のセミコロンを省略できますが、省略できないため、余分なセミコロンを入れた方が安全です。