JavaScript - コメントを入れ子にする場合に起きる不具合

JavaScript では複数行コメントアウトを意味する /*~*/があります。

ですが、この複数行コメントを利用する場合は注意が必要です。

複数行コメントを入れ子にするとコメントが適切に認識されません。

ここでは、コメントを入れ子にした場合に起きる不具合について説明します。

複数行コメントを入れ子にしてみる

まずは、1つだけ複数行コメントのあるサンプルコードを用意します。


var i = 0;

/* カウンタ */
var count = 0;

次に、上のプログラム全体を /* ~ */ でコメントアウトします。

赤字の部分が今回追加した部分です。


/*

var i = 0;

/* カウンタ */
var count = 0;

*/

このプログラムを実行してみるとどうなるでしょうか?

実行結果は次の通りです。


SyntaxError: expected expression, got '*'

一番最後の行にある「*」が SyntaxError としてエラーが発生しています。

エラーの原因は?

エラーの原因は次のコードを見るとわかります。

赤字の部分が、コメントとして認識されている部分です。


/*

var i = 0;

/* カウンタ */
var count = 0;

*/

真ん中にある */ でコメントが終了してしまって、

最終行の */ はコメントとして認識されていません。

ですから構文エラーが発生しています。

このように、複数行コメントを入れ子にすると、 途中でコメントが途切れて構文エラーが起きます。

解決策

入れ子にした場合の問題点を解決するには、次のようにすると良いでしょう。

/*

var i = 0;

// カウンタ
var count = 0;

*/

真ん中にあるコメントを単一行コメントの // にすれば、 全体がコメントとして認識されます。

まとめ

・JavaScript の複数行コメントを入れ子にすると、「途中でコメントが途切れてしまう」という問題が起きます。

・この問題を解消するには、中のコメント部分を単一行コメント // にします。