字符串.raw https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/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
}
为什么这是一个例外?
Update:单个反斜杠不能执行我想要的操作的另一个示例是:
let str1 = "folder";
let str2 = "subfolder";
let fileName = "file.txt"
let path = String.raw`\${str1}\${str2}\${fileName}`;
console.log(path);
虽然我希望得到这个输出:
\folder\subfolder\file.txt
相反,它输出:
\${str1}\${str2}\${fileName}
反斜杠逃避了美元符号的特殊含义。因此,这是另一种情况,您仍然需要将这些反斜杠加倍:(
它可以,但请记住有“文字”字符和反斜杠字符。你要求一个literal反引号。要求字面上的反斜杠:
let str = String.raw`...\\`;
紧跟在反斜杠后面的任何字符都被视为其文字版本,无论它是什么。String.raw
可以解决其中一些限制,但不是全部。它抑制了类似的插值\n
但不能阻止您意外添加文字反引号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)