【JS】JavaScriptにセミコロン付けない派の一意見
こんにちは!今日はJavaScriptにおける宗教戦争割と意見の割れるテーマの一つ、セミコロン付けるか付けないか問題について書きます。
はじめに
私はセミコロン「付けない派」です。
JavaScript開発歴は3年ちょいで、1年目途中から付けない派になりました。
というわけで、以下に私の思うセミコロン付けない理由について書こうと思います!あくまで一人の開発者の意見として読んでいただけるととても有り難いです!
セミコロンを付けないがために間違えるって場面がほぼない
これが一番大きいです。
一般的にセミコロンを省略することで予期せぬ挙動となりやすい場所として、
- IIFE(即時関数)
- return直後
の2つがあります。厳密には他にもあるけど。
ただ本当にこの2つで間違えるケースが多いかは懐疑的です。即時関数はES6以降ではそもそもあんまり使いませんし(constができてスコープ内に変数閉じ込めれるようになったし)、return直後に改行したくなるような思いを抱いたことがほぼありません。
というかreturn直後の改行はセミコロンあっても駄目だし(文法的にではなく人為的に間違えやすいという主張だと思うけど)。PHPみたいな{}で1行使うような書き方(GNUスタイル)に慣れてる人なら↓みたいな間違いをかろうじてするかな?って程度です。
return
{
one: 1,
two: 2,
three: 3,
}
セミコロンを書くのが普通の風潮が薄れている
bootstrap、vue、reduxあたりはセミコロンないです。
RubyやPythonがないのはまああれとして、AltjsのElmもないしJSとセミコロンの挙動が全く同じLuaもないです。
JavaScript Standard Styleっていうセミコロンなし推奨の書き方もあるし、GitHubもセミコロンなし派。prettierにもセミコロン省略のオプションがあります。
結局JSのセミコロンって昔の名残というか、昔は必要だけど今いらんって認識でもいいんじゃないでしょうか?他言語の例だと、PHPの最後の ?> は当初は必要だったけど今はむしろ書かないのを推奨してるみたいな。
セミコロンが視覚的にクールじゃない
多少主観が入りますが、セミコロンって視覚的にすごい汚いと思います。
形状的に逆三角形で重心が高いしパーツが2つに分かれてるし、視覚的に不安定な印象を受けます(情報デザイン科出身並みの感想)
上の点が下の点にぶつかった後にツルンって右側に滑っていきそうな…うん、こんな感じに。
句点やピリオドの安定感と比べると一目瞭然だと思います。試しに英文のピリオドを全部セミコロンに変えてみたりすると可読性が思いっきり落ちます。
セミコロンが「本当に不要な所」の判別が難しい
セミコロン付ける付けないは別として、文法上本当にセミコロンが不要な所がJavaScriptにはまあまああります。
- 関数宣言の後
- if文の後
- try-catchの後
この判別は中々やっかいで、例えば関数宣言の後にはセミコロンは不要ですが関数式の後には必要です。セミコロンなしに統一すればそういった悩みからは開放されるでしょう。
おわりに
セミコロン付ける付けないに限らずですが、大前提として決められているコーディングルールがあるならそれに従いましょう!特になければ好きな方を使いましょう!でも個人的にはセミコロン付けたくないな!という話でした。