Javascript 在标记函数中连接字符串

Javascript 在标记函数中连接字符串,javascript,ecmascript-6,string-interpolation,Javascript,Ecmascript 6,String Interpolation,ES6引入了字符串插值。但是这些字符串不仅仅是插值,它们也是 我不知道这种功能性的目的是什么,但我认为以某种方式处理所有内联值是有用的。例如,用于转义或编码。当然,我可以编写这样的代码: 功能行程,…VAL{ VAL=VAL.map(编码组件); /// ??? var-res=''; 对于(var q=0;q您可以使用String.raw函数: function toUrl(s, ...vals) { vals = vals.map(encodeURIComponent); retu

ES6引入了字符串插值。但是这些字符串不仅仅是插值,它们也是

我不知道这种功能性的目的是什么,但我认为以某种方式处理所有内联值是有用的。例如,用于转义或编码。当然,我可以编写这样的代码:

功能行程,…VAL{
VAL=VAL.map(编码组件);
/// ???
var-res='';

对于(var q=0;q您可以使用
String.raw
函数:

function toUrl(s, ...vals) {
  vals = vals.map(encodeURIComponent);
  return String.raw({ raw: s }, ...vals);
}

我想这只是意味着它更灵活。可以编写一个标记函数来构造某种对象,或者它的目的不仅仅是在合并参数之前解析它们。@qxz,是的,它更灵活。但我不是问为什么标记不仅仅是处理,我是问一些函数,比如
return String.mergeInterpolated(s,…vals.map(doSmth))
。这对我来说似乎是一种常见的情况,不是吗?啊,我明白了。是的,没有一个标准函数可以做到这一点。@qxz,但这意味着其他一些用法被认为是典型的,不是吗?如果是这样,我对它的用法很感兴趣。请参阅本文末尾的“标记模板文字的意义”一节。