ES6引入了字符串插值。但是这个字符串不仅仅是插值 - 它们也是can be used with tag function to process values。
我不知道这种功能的目的是什么,但我认为以某种方式处理所有内联值非常有用。例如,用于转义或编码。当然,我可以编写这样的代码:
function toUrl(s, ...vals) {
vals = vals.map(encodeURIComponent);
/// ???
var res = '';
for (var q=0; q<vals.length; ++q) {
res += s[q] + vals[q];
}
return res + s[s.length-1];
}
var data='a+b', args='%'
console.log(toUrl `data=${data}&args=${args}`)
console.log(toUrl `data=${data}&args=${args}&t=1`)
&#13;
但我很惊讶我必须在???
之后编写这段代码。对我来说,使用此功能都需要类似的代码 - 使用字符串合并处理过的参数。但我找不到相应的标准方法。它存在吗?如果没有,标记蜇伤的最初目的是什么?它的典型用法是什么?
答案 0 :(得分:3)
您可以使用String.raw
功能:
function toUrl(s, ...vals) {
vals = vals.map(encodeURIComponent);
return String.raw({ raw: s }, ...vals);
}