作者回复: 是的。的确如此。而且除了“定制替换规则”之外,我也想不到有什么用处。
这很类似于在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都测试过。
作者回复: 这个倒不是。
“引用(规范类型)”还真的只是数据类型,是数据,不是可执行结构,也不包含逻辑。
“引用(规范类型)”在作为左手端和右手端的不同,是语言学层面的语义之一,是语言实现中的规范,不是一个“确定场景下的确实逻辑,或逻辑结构”。二者在讨论的并不是同一个层面的东西。