我最近了解到 ES6 允许在使用模板文字作为参数时进行不带括号的函数调用。例如
showstring`Hello World`;
然而,在阅读了几篇关于这个功能的文章之后,我发现关于 JS 如何处理这些调用背后的逻辑的信息很少。
在玩弄了我的代码的一些排列之后,我仍然在努力拼凑模板文字如何在函数内部被分解的模式,当人们以这种方式调用它时。
const showstring = (str) => {
console.log(str);
}
showstring`Hello World`;
上面代码中发生的事情很简单,字符串文字作为数组接收,其中第一个也是唯一的元素是字符串。
一旦我开始在模板中使用表达式,它就会变得有点混乱。例如
const showstring = (str, ...values) => {
console.log(str);
console.log(values)
}
const name = 'John'
showstring`Hello World ${name} ${name} ${1 + 2} and more`;
所以看起来这...values
部分解构了所有的表达式。但是,为什么str
数组在这些位置有空字符串呢?
我只是没有完全掌握它遵循的模式。有人可以解释这个功能吗?或者也许给我指出一篇好文章?