为什么String.raw不能以反斜杠结尾?

问题描述 投票:0回答:1

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
}

为什么这是例外?

javascript node.js ecmascript-next template-literals
1个回答
1
投票

可以,但是请记住,这里有“文字”字符和反斜杠字符。您要的是literal反引号。要求文字反斜杠:

let str = String.raw`...\\`;

反斜杠后紧跟的任何字符均视为其文字版本,无论它是什么。 String.raw可以解决其中一些限制,但不能全部解决。它可以抑制\n之类的插值,但不能防止您意外添加字面反引号。

© www.soinside.com 2019 - 2024. All rights reserved.