javascript console.log 'raw' 的新功能?

javascript console.log new feature with 'raw'?

遇到过这个例子,完全迷路了...

const test = (hey) => console.log(hey);

console.log(test `wtf`); 

首先这一切都是有效的,在console.log看来是

["wtf", raw: Array[1]]

好像函数已经执行了,而且还有额外的raw?有人可以解释一下吗?

只是一个Tagged Template Literal。它看起来很花哨,但没有什么特别之处。请注意,它们是 ES6/ES2015 的一部分,因此如果您计划支持旧版浏览器,则需要转载它们。

Template literals are string literals allowing embedded expressions. You can use multi-line strings and string interpolation features with them. They were called "template strings" in prior editions of the ES2015 / ES6 specification.

感谢@karmuran 和@deceze

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_template_literals

原始字符串

特殊的原始 属性,可用于标记模板文字的第一个函数参数,允许您在输入原始字符串时访问它们。

function tag(strings, ...values) {
  console.log(strings.raw[0]); 
  // "string text line 1 \n string text line 2"
}

tag`string text line 1 \n string text line 2`;