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