SyntaxError: missing ; before statement

JavaScript の例外 "missing ; before statement" は、どこかでセミコロンが欠けており、 自動セミコロン挿入 (ASI) によって追加できない場合に発生します。 JavaScript がソースコードを正しく解釈するためには、セミコロンを置く必要があります。

メッセージ

js
SyntaxError: Expected ';' (Edge)
SyntaxError: missing ; before statement (Firefox)

エラーの種類

エラーの原因

どこかでセミコロン (;) を忘れています。JavaScript の文はセミコロンで終えなければなりません。一部は、自動セミコロン挿入 (ASI) の影響を受けますが、この場合に JavaScript がソースコードを正確に解釈するためには、セミコロンを置く必要があります。

しかし、多くの場合、このエラーは、文字列の不適切なエスケープや var の誤った使用など、その他のエラーの結果として発生します。また、どこかで括弧が多すぎるかもしれません。このエラーが発生した場合は、注意深く構文をチェックしてください。

エスケープされていない文字列

このエラーは、次のように、適切に文字列をエスケープしておらず、文字列がすでに終了していると JavaScript エンジンが予測したときによく発生します。

js
var foo = 'Tom's bar';
// SyntaxError: missing ; before statement

二重引用符を使用するか、アポストロフィをエスケープするかしてください。

js
var foo = "Tom's bar";
var foo = 'Tom\'s bar';

var を使用したプロパティ宣言

オブジェクトや配列のプロパティを var を使って宣言することはできません

js
var obj = {};
var obj.foo = 'hi'; // SyntaxError missing ; before statement

var array = [];
var array[0] = 'there'; // SyntaxError missing ; before statement

var キーワードを省略してください。

js
var obj = {};
obj.foo = "hi";

var array = [];
array[0] = "there";

誤ったキーワード

他のプログラミング言語から来た人は、 JavaScript では同じ意味を持たない、あるいはまったく意味を持たないキーワードを使ってしまうこともよくあります。

js
def print(info){
  console.log(info);
}; // SyntaxError missing ; before statement

functiondef の代わりに使用してください。

js
function print(info) {
  console.log(info);
}

関連情報