【发布时间】:2018-04-11 21:55:31
【问题描述】:
所以我有一个标签功能:
var tagFunc = function(strings, ...expressions){
}
如果我调用它:
tagFunc`sum is ${2+2}`
然后我假设:
-
strings是一个包含两个元素的数组。strings[0]是"sum is "和strings[1]是表达式 ("") 后面的空字符串。 -
expressions是一个只有一个元素的数组,是表达式2+2本身的结果,因此值为4。 -
expressions数组总是比strings数组少一项。
我的假设是否正确?如何正确生成 tagFunc 内的最终字符串?
我的尝试是
var tagFunc = function(strings, ...expressions){
var str = "";
strings.forEach((string, i) => {
str += string + (expressions[i]?expressions[i]:"");
});
return str;
}
console.log(tagFunc`sum is ${2+2}` === `sum is ${2+2}`) // true
这似乎有效:
我可以依靠我的假设继续这个逻辑吗?
【问题讨论】:
-
我无法回答这个问题,但我不知道您可以使用模板文字和函数来做到这一点。使用模板调用没有 () 的函数很酷。感谢您提出有趣的问题。
标签: javascript ecmascript-6 template-literals