メッセージ
SyntaxError: missing ; before statement
エラータイプ
何がうまくいかなかったのか?
どこかでセミコロン(;
)を忘れています。JavaScript 文はセミコロンで終えなければなりません。これらのいくつかは、自動セミコロン挿入(ASI)の影響を受けますが、この場合JavaScript がソースコードを正確に解析するためには、セミコロンを提供する必要があります。
しかし、多くの場合、このエラーは、文字列の不適切なエスケープや var
の誤った使用などのその他のエラーの結果として発生します。また、どこかで括弧が多すぎるかもしれません。このエラーがスローされた場合、注意深く構文をチェックしなければなりません。
例
エスケープしていない文字列
このエラーは、適切に文字列をエスケープしておらず、JavaScript エンジンが文字列がすでに終了していると予測するときにしばしば発生します。たとえば:
var foo = 'Tom's bar';
// SyntaxError: missing ; before statement
ダブルクオートを使用するか、アポストロフィをエスケープします:
var foo = "Tom's bar";
var foo = 'Tom\'s bar';
var を使用したプロパティ宣言
オブジェクトや配列のプロパティを、var
を使って宣言することはできません。
var obj = {};
var obj.foo = 'hi'; // SyntaxError missing ; before statement
var array = [];
var array[0] = 'there'; // SyntaxError missing ; before statement
替わりに、var
キーワードを省略します:
var obj = {};
obj.foo = 'hi';
var array = [];
array[0] = 'there';