javascript console.log新功能'raw'?

时间:2016-10-26 07:34:47

标签: javascript ecmascript-6 template-literals tagged-templates

我遇到过这个例子而且完全迷失了......

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

console.log(test `wtf`); 

首先这一切都有效,在console.log中,它似乎是

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

这就像功能已被执行并带有额外的raw?有人可以解释一下吗?

2 个答案:

答案 0 :(得分:5)

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

  

模板文字是允许嵌入表达式的字符串文字。您可以使用多行字符串和字符串插值功能。他们被称为"模板字符串"在ES2015 / ES6规范的先前版本中。

答案 1 :(得分:2)

归功于@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`;