【发布时间】:2016-07-10 03:13:58
【问题描述】:
根据MDN,Tagged template literals可以这样使用:
var a = 5;
var b = 10;
function tag(strings, ...values) {
alert(strings[0]); // "Hello "
alert(strings[1]); // " world "
alert(values[0]); // 15
alert(values[1]); // 50
return "Bazinga!";
}
tag `Hello ${ a + b } world ${ a * b }`; // "Bazinga!"
在上面的示例中,函数tag 的调用没有使用括号。
我希望它应该像 tag(`Hello`) 一样调用,但它会将模板文字产生的字符串作为函数的 strings 参数的参数传递。
不带括号但带参数调用函数的这个特殊功能是什么?
【问题讨论】:
-
您可以添加指向该示例源的链接吗?
-
标记模板:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。语法就是这样。它本身就很特别。
-
这是我第一次看到在没有 () 的情况下调用函数。最初认为这是一些速记符号,但快速检查表明并非如此
-
有人能解释一下为什么 -ve 投票
-
new运算符例如:new Foo。当然还有call和apply(当然也是函数,但你不是“使用括号”来调用函数本身)。
标签: javascript ecmascript-6 tagged-templates