javascript - ES6 标记的​​模板函数如何解释它们的参数顺序?

标签 javascript ecmascript-6 template-strings

考虑以下代码:

function f() {
  console.log(Array.from(arguments));
}

var x = 2;
var y = 3;
f`before ${x} ${y} after`;

f 的参数为 ( according to Traceur ):

["before ", " ", " after"], 2, 3

假设我想将所有文字字符串与替换值连接起来。
我该如何以正确的顺序执行此操作?

我需要将第一个数组中的“分割点”与第一个之后的每个参数相匹配吗?

最佳答案

总是比替换多一个字面部分。第一个文字是模板的第一部分(如果以替换开头,则为空字符串),最后一个文字是模板字符串的尾部(或者,如果以替换结尾,则再次为空字符串)。

要按顺序获取各个部分,请访问 literal[0]sub[0]literal[1]、... ,sub[sub.length-1]文字[sub.length]

这是一个简单的起点:

function simpleTag(lit, ...sub) {
  return sub.reduce(
    // Add next substition and following literal
    (soFar, s, i) => soFar + s + lit[i+1],
    lit[0] // Start with the first literal
  );
}

关于javascript - ES6 标记的​​模板函数如何解释它们的参数顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24816777/

相关文章:

javascript - 如何禁止从 Angular JS 下拉列表中选择特定选项?

javascript - 从类名创建一个新对象并将类名作为字符串传递

javascript - 在 JavaScript (ES6) 中合并数组以形成数组数组

javascript - 无法在表中显示数据库中的所有数据

javascript - 是否可以在 es6 模板字符串中进行评论?

javascript - 如何使用复选框来制作过滤器?

javascript - 如何在 JMeter 中手动设置由 JavaScript 以编程方式设置的 cookie

javascript - 模板字符串不起作用

javascript - 如何根据条件渲染组件?

javascript - 模板字符串作为对象属性名称