SyntaxError: unterminated string literal
メッセージ
SyntaxError: unterminated string literal
エラータイプ
何がうまくいかなかったのか?
どこかに終端されていない String
があります。文字列リテラルは、シングル('
)かダブル("
)のクオートで囲む必要があります。JavaScript は、シングルクオート文字列とダブルクオート文字列を区別しません。エスケープシーケンス はシングルクオートとダブルクオート、どちらの文字列でも動作します。このエラーを修正するためには、次の点をチェックしてください:
- 文字列リテラルのために、クオート(シングルかダブル)の開始と終了を行っている。
- 文字列リテラルを正しくエスケープしている。
- 文字列リテラルが複数行に分けられていない。
例
複数行
JavaScript では、次のように複数行にまたがる文字列を分割できません:
var longString = 'This is a very long string which needs
to wrap across multiple lines because
otherwise my code is unreadable.';
// SyntaxError: unterminated string literal
替わりに、+ 演算子 かバックスラッシュ、template literal を使用します。+
演算子だと、次のようになります:
var longString = 'This is a very long string which needs ' +
'to wrap across multiple lines because ' +
'otherwise my code is unreadable.';
または、文字列が次のように続くことを示すために、各行の終わりにバックスラッシュ文字("\")を使用することもできます。バックスラッシュの後に、(改行を除いて)スペースや文字、インデントを入れないようにしてください。そうしないと動作しません。バックスラッシュの場合、次のようになります:
var longString = 'This is a very long string which needs \
to wrap across multiple lines because \
otherwise my code is unreadable.';
ECMAScript 2015 環境でサポートされている template literal を使っても改行可能です。
var longString = `This is a very long string which needs
to wrap across multiple lines because
otherwise my code is unreadable.`;