あなたは関数宣言の後にセミコロンを追加してはなりません。
StatementList
:
StatementListItem
StatementList
StatementListItem
:
Javascript文法をチェックした後、理由
Declaration
:
HoistableDeclaration
ClassDeclaration
LexicalDeclaration
HoistableDeclaration
:
FunctionDeclaration
GeneratorDeclaration
ここでは関数の文法生産です:
FunctionDeclaration → HoistableDeclaration → Declaration → StatementListItem → StatementList
これは私の以前の反応がで間違っていることを証明しています(これは間違っているので、以前の編集を見る必要はありません! ;))。
function xx() {}
構造だけではは特殊なケースで、どちらも - 厳密を話す - ステートメントまたは式を、ひいてはセミコロンで終了するませです。
構文の一部である場合に存在する式function()
構文を使用している場合は、セミコロンを追加するだけで済みます(または、ASIはそれを処理したままにしておく必要があります)。別の表現の中
var foo = function() {};
または埋め込み:
(function() {})();
!function x() { ... }();
のいずれかのケースでは、あなたが最後にセミコロンを追加する必要があり、それあなたがそれを文の一部を持っているいずれかの必要があるのステートメントようにするには明らかに完全な声明の
一般的に言って、私はPythonのマントラあなたはASIは、そうでない場合は追加であろうと、セミコロンを追加することを躊躇ときに、それを追加し「明示的、暗黙的よりも優れている」のが好きです。
申し訳ありませんが私の答えの最初のバージョンでは、私は退屈としていくつかのPHPコードをデバッグします。 ☺
HTH
出典
2016-03-18 18:32:16
zmo
関数*宣言*の後にセミコロンを置くのは非常にまれだと思います。なぜなら、それらはブロック式のように扱われるからです。 (正式な構文であるかどうかは分かりませんが、それは人々の扱い方です。)しかし、通常のステートメントの後には常にセミコロンを使用するべきです(** Javaの場合とまったく同じです**)。セミコロンの自動挿入(これは実際に依存することは意図されていません)では、いくつかのエッジケースを避けてください。 –