Javascript 传递变量时,String.raw无法按预期工作

Javascript 传递变量时,String.raw无法按预期工作,javascript,ecmascript-6,Javascript,Ecmascript 6,我对string.raw有问题。我有以下几种方法可以奏效。示例来自: 但当我执行相同操作但仅使用变量时,所有\都将被删除。如何使用以下代码获得与上述相同的结果: // Create a variable that uses a Windows // path without escaping the backslashes: const filePath = String.raw`${"C:\Development\profile\aboutme.html"}`; cons

我对string.raw有问题。我有以下几种方法可以奏效。示例来自:

但当我执行相同操作但仅使用变量时,所有\都将被删除。如何使用以下代码获得与上述相同的结果:

// Create a variable that uses a Windows
// path without escaping the backslashes:
const filePath = String.raw`${"C:\Development\profile\aboutme.html"}`;

console.log(`The file was uploaded from: ${filePath}`);
// expected output: "The file was uploaded from: C:\Development\profile\aboutme.html"
 but I get "The file was uploaded from: C:Developmentprofileaboutme.html"
谢谢你的帮助

如何使用以下代码获得与上述相同的结果

你不能,这是不同的代码

String.raw
仅用作模板文本上的标记。第二个代码段中的模板文本是
`${…}`
,即它没有实际内容,只有一个插值。(该值来自字符串文字表达式,
string.raw
对该值绝对没有影响)。它的工作原理和

const __temp = "C:\Development\profile\aboutme.html";
//                ^           ^       ^
const filePath = String.raw`${__temp}`;

反斜杠在一个普通的
“…”
字符串中,没有转义,也没有办法将它们带回来。

在变量上使用
string.raw
没有多大意义,因为反斜杠已经在该变量中移除。@Ivar这是我正在发送的变量,bakcslash已经存在:${“C:\Development\profile\aboutme.html”}不,它们不是。它们是字符串文字,但一旦代码被解析并存储在内存中,这些反斜杠就消失了。您将看到是否记录了
“C:\Development\profile\aboutme.html”“
。您可以像在第一个代码中那样使用
String.raw
。但它只在源代码中包含实际字符串时才起作用。如果变量中有字符串,则不可能,因为这些反斜杠在该点已丢失。否。在您的示例中,它们丢失了,因为字符串在双引号内,当JavaScript引擎解析代码时,这些反斜杠被视为转义字符,因此被删除。但我不相信这是你真正的代码。我假设你从某个地方得到这个字符串,但是你没有显示在哪里,所以我不能回答这个问题。(如果这是您的实际代码,那么不使用第一个示例是没有意义的。)
const __temp = "C:\Development\profile\aboutme.html";
//                ^           ^       ^
const filePath = String.raw`${__temp}`;