私は常に、JavaScript ソース コード内のすべての空白 (スペース、タブ、改行) は「等しい」、つまり識別子、キーワード、演算子などの言語要素を区切るためにすべて有効であると想定していました。
ただし、改行とスペースまたはタブの奇妙な違いに気付きました。コメント内でも!
これは問題なく動作します: (関数定義と関数呼び出しの間に改行がありますが、セミコロンはありません)
var bla = function() { alert('hello') }
bla();
これも機能します: (終了 } 文字と bla() 関数呼び出しの間のセミコロン)
var bla = function() { alert('hello') };bla();
ただし、これは機能しません: (スペースまたはタブが 1 つだけか、複数か、またはまったくないかにかかわらず、違いはありません)
var bla = function() { alert('hello') } bla();
そして、それはさらに奇妙になります。
これも機能しません: (スペース、タブ、セミコロンを含むコメントで区切られています)
var bla = function() { alert('hello') } /* ; */ bla();
しかし、これは: (改行を含むコメント)
var bla = function() { alert('hello') }/*
*/bla();
jsfiddle のライブ デモ:
これは JavaScript のバグですか、それとも何か不足していますか?