JavaScriptのソースコードを読んでいたら、あるはずの場所にセミコロンが無いものを見つけました。
JavaScript初心者なので、行末のセミコロンは省略しても良いものなのか?疑問に思いました。
こちらの本を読んでいます。
「これ1冊でゼロから学べる Webプログラミング超入門 ーHTML,CSS,JavaScript,PHPをまるごとマスター」
書籍の中のリスト3-12のコードです。
obj.className = 'newelement';
obj.textContent = "No, " + count++;
event.target.appendChild(obj);
この部分の1行目にセミコロンがありません。
他の行はあるので、必要なものだと思います。
調べてみたところ、一応、セミコロンを自動補完する機能があるので、
省略可能なのですが、コードによっては挙動が変わってしまうので、
しっかりつけたほうがよいとのことです。
Google Chromeのディベロッパーツールのコンソールで挙動を調べてみました。
var b=1;
a++;
b;
console.log("a = " + a);
console.log("b = " + b);
結果は、
b = 1
1つセミコロンをはずしてみました。
var b=1;
a++
b;
console.log("a = " + a);
console.log("b = " + b);
正しい結果がでます。
b = 1
var b=1;
a++
b
console.log("a = " + a);
console.log("b = " + b);
もう一つはずしてみました。
正しい結果がでます。
b = 1
こんなことしないと思いますが、改行を入れてみました。
var b=1;
a
++
b
console.log("a = " + a);
console.log("b = " + b);
結果が逆になりました。
b = 2
ただ次のようにした場合、エラーになるので、
改行を入れるのはありえないことかもしれません。
var b=1;
a
++;
b
console.log("a = " + a);
console.log("b = " + b);
こういうことがあるので、セミコロンは入力すべきです。