作者回复: 是的。的确如此。而且除了“定制替换规则”之外,我也想不到有什么用处。
这很类似于在string.replace()里面,你可以写成string.repalce('a', 'b')这样的一次替换,也可以写成string.replace(/a/g, function f() {})这样子,通过f()来定制替换的规则。
js只是提供了这种便捷性给你,并且约定了在函数f()上的参数界面而已。
作者回复: 这个……这样讲,基本上也算没有什么问题。尤其是“最后具体表现为值”。
不过模板的那个叫做“模板调用”的东西,更多的揭示了它内容的更多细节。建议你看看,分析一下。就是下面这样的代码:
```
f = function() { ... }; // 声明函数
f`aabbb${x}ccc`; // 模板调用:在函数后面直接使用模板
```
作者回复: 这个很有可能是宿主程序的处理。我在Chrome控制台里也这么报错。不过在node.js里面却是ReferenceError。
我用node v8.14和node v11.13都测试过。