javascript - ES6 何时使用 String.raw 代替默认模板文字

标签 javascript string ecmascript-6

我正在尝试连接一堆字符串以在 Javascript 中构建查询字符串。以前我通过丑陋的字符串连接实现了这一点:

var queryString = "?action=" + actionValue + "&data=" + dataValue";

但是对于 ES6,我发现提供了一些新方法,可以帮助我用更漂亮的代码实现相同的结果,例如 C# 6 中的字符串插值:

string s = $"action={actionValue}&data={dataValue}"

我已经使用默认模板文字和 String.raw 进行了测试,虽然它们的语法略有不同,但它们都可以工作。我倾向于在我的最终副本中使用 String.raw,因为它不允许对字符串进行标记,因此将来会像默认模板文字那样进行修改。

虽然它确实在 MDN docs 中说String.raw 基本上调用默认的模板文字方法,但我更喜欢 String.raw 的语法...我正在调用 String.join 方法在我正在格式化的字符串的大括号内,所以这可能是对 String.raw 的误用。

是否有任何 ES6 向导能够启发我并提供一个优于另一个的理由?

我的代码:

var defaultTemplateStringUrl = `@Url.Action("DownloadMultiple")?inIds=${inData.join(',')}&outIds=${outData.join(',')}&truckId=${truckId}`;
var rawStringUrl = String.raw `@Url.Action("DownloadMultiple")?inIds=${inData.join(',')}&outIds=${outData.join(',')}&truckId=${truckId}`;

window.open( /*url goes here*/);

最佳答案

模板字面量产生一个字符串。如果您使用 String.raw,您将获得该字符串的原始形式:

`a\tb`;           // "a b"
String.raw`a\tb`; // "a\tb"

因此,只有在需要原始形式时才应使用 String.raw

关于javascript - ES6 何时使用 String.raw 代替默认模板文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33355817/

相关文章:

java - 如何遍历字符串以确保它仅在某些位置包含数字?

javascript - ESLint 规则通过创建同名的 const 来防止覆盖函数(尤其是在赋值期间)

Typescript 1.5,导入 ES6 模块

JavaScript 对象解构和别名

javascript - React 中的异步 useEffect 链

c++ - 字符串分配的双重释放或损坏错误

javascript - Javascript 中 new Boolean() 的用途是什么?

c - 如何将运行时变量替换为 c 中的字符串?

javascript - 使用 JavaScript 替换 ">"文本

javascript - 将内联 JavaScript 转换为外部文件