⊗jsPmFCPS 273 of 505 menu

IIFEにおけるセミコロンの安全性

今度は、即時実行関数式の前にプラス記号ではなく、 丸括弧で囲む方法を見てみましょう。次のようになります:

(function() { console.log(1); // 1を出力 })();

変数 num が関数の外部で定義されているとします:

let num = 1; // セミコロンあり (function() { console.log(num); // 1を出力 })();

ここで、セミコロンを付け忘れた場合を考えましょう:

let num = 1 (function() { console.log(num); //!! エラーが発生 })();

このコードはエラーを引き起こします。 JavaScriptがこの関数を最初の行のコマンドの続きとして 解釈してしまうためです。

このような問題を避けるためには、即時関数の前に 常にセミコロンを置く必要があります。次のように:

let num = 1 ;(function() { console.log(num); // 1を出力 })();

この問題は少し大げさに思えるかもしれませんが、 実際はそうではありません。例えば、ページに複数の 別々のファイルからスクリプトを読み込む状況が考えられます。 この場合、あるファイルの末尾にセミコロンが抜けていて、 次のファイルが即時関数で始まると、自動的に問題が発生します。

したがって、今は問題がないと確信している場合でも、 即時関数の呼び出しの前には常にセミコロンを置くべきです。 問題は後になって発生する可能性があります。

上記を適用して、先頭にセミコロンを置いた即時関数を呼び出しましょう:

;(function() { console.log(1); // 1を出力 })();

コードを実行せずに、コンソールに何が出力されるか判断してください:

let str = 'str'; (function() { console.log(1); })();

コードを実行せずに、コンソールに何が出力されるか判断してください:

let str = 'str' (function() { console.log(1); })();
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否