このツールの動作
任意のテキストを、JavaScriptやTypeScriptで引用符の間に貼り付けてもリテラルを壊さない形に変換します。
- バックスラッシュは二重化されます。
C:\pathがパスのまま保たれ、エスケープシーケンスに化けません。 '、"、`はいずれもエスケープされるため、結果は3種類のどの引用符スタイルでも有効です。- 改行、復帰、タブ、後退、改ページ、垂直タブはそれぞれ名前付きの形になります(
\n、\r、\t、\b、\f、\v)。 - U+0020未満のその他の文字は
\uXXXXになります。NUL もその一つで、名前付きのシーケンスではなくエスケープされた U+0000 の形で出力されます。ASCII より上には例外がちょうど2つあります。Unicode の行区切りである U+2028 と U+2029 です。リテラル内にそのまま置くと ES2019 より前では構文エラーであり、<script>タグに埋め込んだリテラルは今でも壊れるため、\u2028、\u2029として出力されます。
ASCIIを超える文字は意図的にそのまま残します。JavaScriptのファイルはUTF-8であり、"café" は有効かつ読みやすく、"caf\u00e9" にエスケープしてもリテラルが読みにくくなるだけだからです。
こんなときに使います
コード断片、正規表現の一部、ログの1行、JSONの一部を .js や .ts のファイルに手で埋め込むときです。インラインで書く JSON.parse のペイロードにも有用で、そこではエスケープ漏れの引用符が文字列を黙って切り詰めてしまいます。
このツールがしないこと
エスケープの対象は文字列リテラルであって、テンプレートのプレースホルダーではありません。出力が `...${x}...` の中に入る場合、${ は依然として解釈されます。このツールはバッククォートをエスケープしますが、補間を無効化するわけではありません。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。