请教下大家这种JS写法叫什么?

fn`str`

感觉是将str字符串作为参数给fn,可是又不太对

阅读 1.8k
5 个回答

这种JavaScript写法被称为"标签模板"(Tagged Template)。它是ES6(ECMAScript 2015)中引入的新特性。

称为 带标签的模板

MDN中有描述, https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Refer...

写个例子在F12里运行下就明白啦

function myTag(strings, personExp, ageExp) {
  // strings 是一个字符串数组,包含模板字面量中的文本部分
  // personExp 和 ageExp 是模板字面量中的表达式
  // 这里可以对这些参数进行任何操作,并返回一个值
    console.log(strings, personExp, ageExp)
}

const person = "Mike";
const age = 28;

const output = myTag`That ${person} is a ${age}.`;

确实是传参,但不是把 str 字符串作为参数,而是把模板字符串里的占位符当参数(不过你这个模板字符串里也没有占位符就是了)。

看 MDN 上给的例子吧,会比较具体一些:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Refer...

阅读“带标签的模板”这一小节就好。

楼上答复的都很准确了。补充一下,可以用这个知识点来意会React JSX的渲染原理。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题