JavaScriptのコメントと改行
今回の記事は、JavaScriptのコメントの文法についての、とてつもなく些細な内容になる。
まず、「改行」の定義について
ECMAScript規格では、俗に改行と呼ばれているものは、正式には、行終端子(Line Terminator)と名づけている。行終端子は5個あり、これは4種類の文字からなる。なぜ4種類の文字で5個あるのか。ひとつは組み合わせなのだ。
行終端子を構成する4種類の文字は、\u000A(Line Feed), \u000D(Carriage Return), \u2028(Line separator), \u2029(Paragraph separator)である。
しかし、慣習的に、CRに続くLFを、ひとつの「改行」とみなすことが横行している。JavaScriptはこの慣習を追認する形で、CRLFの2文字をひとつの行終端子として認識する。
さて、本題に入ろう。JavaScriptのコメントには、一行コメントと、複数行コメントがある。
// 一行コメント
/* 複数行
コメント*/
コメントは空白文字とみなされる。
一行コメントは、//から行終端子までがコメントとなる。ただし、行終端子はコメントに含まれない。
複数行コメントの中に行終端子があった場合、複数行コメントは、行終端子とみなされる。
なぜ行終端子が残るのかというと、自動セミコロン挿入(automatic semicolon insertion)のためだ。
function f()
{
var i = 0 ;
i // 一行コメント
++ ; // エラー
}
一行コメントは、行終端子として認識されるので、自動セミコロン挿入が働く。したがって、上記のコードは、正しく文法エラーになる。
JavaScriptの自動セミコロン挿入については、このブログでも4年前に取り上げたが、当時はまだ規格の読解力が今ほどではなく、やや稚拙であるので、この機会に、規格を§7.9まで読み進めたあとで、解説しようと思う。
ドワンゴ広告
この記事は意識高い系ドワンゴ社員である筆者が、超チューニング祭のために、自発的に06:33に出社してECMA-262 Edition 5.1を読みながら書いた。
昨日は、実質七時間しか睡眠を取っていない故に「つれー」状態にある。実質七時間なのだ。
ドワンゴは本物のC++プログラマーを募集しています。
CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0