0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JavaScript末尾セミコロンについて

Last updated at Posted at 2019-12-15

調べる動機

先日JavaScriptのコードをみていて、末尾コロンがない部分がほとんどだった。僕は今までつけたほうが間違いが少ないというなんとなくでやっていたので、今回調べてみることにした。

末尾のセミコロンが必要ない場合(末尾コロン自動挿入)

3つほどパターンが存在する。
・①改行を挟んで、構文的にエラーが出るものであれば、セミコロンをいれて文を区切ってくれる
・②コードを最後まで見て、一番最後でエラーになったとき、セミコロンを入れてくれる
・③特定文字の改行の場合、セミコロンを入れてくれる

自動挿入パターン

①改行を挟んで、構文的にエラーが出るものであれば、文を区切ってくれる

const a = 1
alert(a)

const b = 1;
alert(b);

【const a = 1】と【alert(a)】の後ろにそれぞれセミコロンが自動挿入されているため、問題なく動作します。

②コードを最後まで見て、一番最後でエラーになったとき、セミコロンを入れてくれる

const a = 1
alert(a)

【const a = 1】には、①のルールが適用されますが、【alert(a)】には改行がないので、①のルールが適用されません。そこで②のルールが適用され問題なく動作します。

③特定文字の改行の場合、セミコロンを入れてくれる

  • return
  • ++ 、--
  • break
  • throw
  • continue
  • yield
  • ArrowParameters

などの後の改行の際は、その後に続いてエラーが出なくても自動で改行が入る

return
3

これは、

return;
3;

return 3;となっても構文的にエラーは出ないが、特定文字のためreturn; 3;となり何も返してくれなくなる。つまり、書くときは

return 3;

とする必要がある。

挿入されない例外

for(
 ここには自動挿入されない
)

if()
 セミコロン入れても空行の場合は自動挿入されない
else
 alert('a')

セミコロンをいれるかどうか

セミコロンを入れる派が世間的には90%のようです。
入れない派の主張としては、セミコロンを入れるのは冗長、JavaScriptが多様な書き方ができるためなどがあります。

しかし、現実的にチームで開発する際は、間違いが起きにくいほうを選んだほうがいいと思う。そのため末尾には改行を入れるほうがいいと思った。

JavaScriptの行末セミコロンは省略すべきか

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?