JavaScript模板字面量的默认原生tag函数名称是什么?
处理模板字面量默认插值的原生函数相关结论
- 不存在对外公开的、可直接调用的对应原生函数,该功能是ECMAScript语法层面的内置语义,没有作为可调用接口暴露给用户代码。
- 不带标签的模板字面量的拼接逻辑在ECMAScript标准中有明确的固定定义,从ES2015引入模板字面量以来从未发生过变更,你可以按照规范逻辑自行实现,完全不需要担心和原生行为不一致。
标准定义的默认模板拼接逻辑
规范规定的cooked模式拼接规则如下:
- 初始化结果为空字符串
- 将模板字符串数组的第0项拼接到结果中
- 从索引1开始遍历模板字符串数组:
- 先将前一个对应索引的插值表达式求值结果拼接到结果中
- 再将当前模板字符串片段拼接到结果中
- 遍历结束后返回最终拼接结果
符合规范的实现参考
你之前优化后的实现完全符合上述规则,也可以用更简洁的reduce写法:
const cooked = [ textParts.reduce((result, text, index) => { return result + (index > 0 ? expressions[index - 1] : '') + text }, '') ]
内容的提问来源于stack exchange,提问作者KRyan
相关产品推荐
相关产品推荐

