この記事は編集レビューを必要としています。ぜひご協力ください。
メッセージ
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.`;