我正在尝试连接一堆字符串以在 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/