JavaScript でセミコロンを省略した場合の弊害
JavaScript でセミコロンを付けるべきか否かっていうは割と宗教的な違いがあると思います。
じゃあ、実際セミコロンをつけなかった場合にどういう弊害があるのか、というのを簡単に調べてみました。
その中で気になった記述をいくつかピックアップしてみます。
行頭が ( から始まる
JavaScript の場合、グローバル空間を汚染しないためによう以下のように (function(){})
で囲ってしまうというテクニックが使われます。
(function() { const a = 1; const b = 2; const c = 3; })();
これ自体は特に問題はないんですが、次のように『この定義の前にセミコロンがない文を置く』とエラーになります。
// TypeError: 42 is not a function const global = 42 (function() { })();
これは JavaScript が
const global = 42(function() { })();
という風に解釈してしまうためです。
return 文
こちらは『セミコロンをつけなかった場合の挙動』っていうのとはちょっと違いますが、次のように return
文の後に改行すると意図しない動作になります。
function test(){ return 42; } test() // => undefined
上記のコードはちょっと極端な例ですが、例えば {}
を記述する際に改行するようなコーディングスタイルであれば注意する必要があります。
function test(){ return { name: "homu" } } test() // => undefined
所感
基本的にはセミコロンをつけなくても問題なさそうな気はする。
気はするけど思わぬところで嵌りそうな気もするのでセミコロンをつけておくのが無難そう。