String.raw可用于创建包含反斜杠的字符串,而不必将那些反斜杠加倍。
历史上,创建字符串时需要将反斜杠加倍:
let str = "C:\\Program Files\\7-Zip";
console.log(str);
String.raw允许您的代码显示路径而没有双反斜杠:
let str = String.raw`C:\Program Files\7-Zip`;
console.log(str);
上面的代码工作正常,但是今天我发现,如果原始字符串以反斜杠结尾,它将不起作用:
let str = String.raw`Can't End Raw With Backslash\`;
console.log(str);
上面的代码段产生此错误:
{
"message": "SyntaxError: `` literal not terminated before end of script",
"filename": "https://stacksnippets.net/js",
"lineno": 14,
"colno": 4
}
为什么这是例外?
可以,但是请记住,这里有“文字”字符和反斜杠字符。您要的是literal反引号。要求文字反斜杠:
let str = String.raw`...\\`;
反斜杠后紧跟的任何字符均视为其文字版本,无论它是什么。 String.raw
可以解决其中一些限制,但不能全部解决。它可以抑制\n
之类的插值,但不能防止您意外添加字面反引号。