在标记函数中加入字符串
Join strings in tagging function
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`)
但是我很惊讶我必须在???
之后写一段代码。对我来说,使用此功能很自然,需要类似的代码——将处理过的参数与字符串合并。但是我找不到相应的标准方法。它存在吗?如果不是,标记 stings 的最初目的是什么?它的典型用法是什么?
您可以使用 String.raw
函数:
function toUrl(s, ...vals) {
vals = vals.map(encodeURIComponent);
return String.raw({ raw: s }, ...vals);
}
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`)
但是我很惊讶我必须在???
之后写一段代码。对我来说,使用此功能很自然,需要类似的代码——将处理过的参数与字符串合并。但是我找不到相应的标准方法。它存在吗?如果不是,标记 stings 的最初目的是什么?它的典型用法是什么?
您可以使用 String.raw
函数:
function toUrl(s, ...vals) {
vals = vals.map(encodeURIComponent);
return String.raw({ raw: s }, ...vals);
}