【JavaScript】特殊文字とエスケープシーケンス - 文字列中のダブルクォートや改行

【JavaScript】特殊文字とエスケープシーケンス - 文字列中のダブルクォートや改行

JavaScriptの文字列の文字には特別な意味を持つ文字や通常通り使用できない文字があります。

ここでは、そのような文字の扱い方について解説します。

検証環境

特殊文字

特殊文字は“文字列内で『特別な意味を持つ文字』や『通常通り使用できない文字』の総称”です。

例えば、ダブルクォートは文字列の構文に含まれ、文字列の中で通常通り使えないため、特殊文字になります。

また、『改行』を意味する文字のようにそもそも文字として存在しないものも該当します。

特殊文字の例

ダブルクォートを例に特殊文字となるケースを詳しく説明します。

次の実行結果になるソースコードを考えます。

これ→"はダブルクォートです。

最も単純なソースコードはconsole.logを使用したコンソール出力が考えられます。

console.log("これ→"はダブルクォートです。");

しかし、このソースコードは実行するとエラーが発生します。

Uncaught SyntaxError: missing ) after argument list

これは不正な構文によるエラーです。

"これ→"はダブルクォートです。"には3つのダブルクォートが含まれます。

本来、最初(1個目)と最後(3個目)のダブルクォートの間を文字列として扱いたいところですが、2個目のダブルクォートを文字列の終了と判定してしまうため、不正な構文となってしまいます。

このようにダブルクォートは文字列の構文に含まれ、通常の文字として扱うことができないため、特殊文字となります。

特殊文字を文字列で使用するには、エスケープシーケンスが必要です。

エスケープシーケンス

エスケープシーケンスは“特殊文字を通常文字として表現する方法”です。

バックスラッシュ(\)と文字で特殊文字を表現します。
※ Windowsの場合は円マーク(¥)をバックスラッシュの代わりに使うことがあります。

例えば、ダブルクォートのエスケープシーケンスは\"です。

console.log("これ→\"はダブルクォートです。");
これ→"はダブルクォートです。

2個目のダブルクォートはエスケープシーケンスのため、文字列の終了を意味するダブルクォートではなく、単なる文字としてのダブルクォートとして扱われます。

そのため、このソースコードは正常に実行することが可能です。

また、\"でダブルクォート(")の1文字を意味するため、バックスラッシュは出力されません。

特殊文字とエスケープシーケンス

代表的な特殊文字とそのエスケープシーケンスは次の通りです。

特殊文字 エスケープシーケンス
シングルクオート \'
ダブルクオート \"
改行 \n
タブ \t
括弧 \(\)\[\]

例えば、改行のエスケープシーケンスを使うと、出力時に文字列を改行できます。

console.log("Special\nCharacter");
Special
Character