【发布时间】:2021-04-21 03:42:21
【问题描述】:
我最近了解到 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 数组在这些位置有空字符串呢?
我只是没有完全掌握它遵循的模式。有人可以解释这个功能吗?或者也许给我指出一篇好文章?
【问题讨论】:
标签: javascript ecmascript-6 template-literals tagged-templates