反引号调用一个函数
我不知道如何解释这一点,但是当我跑步
console.log`1`
在谷歌浏览器,我得到的输出
console.log`1` VM12380:2 ["1", raw: Array[1]]
为什么是反向调用日志function,为什么它做一个raw: Array[1]
的指数raw: Array[1]
?
由Catgocat在JS房间里提出的问题,但除了模板化string的东西之外,没有任何答案是有意义的,这并不适合为什么会发生这种情况。
它在ES-6中被称为标记模板string更多可以阅读关于他们在这里 , 有趣的是,我发现在聊天的加星标部分的链接。
但是代码的相关部分在下面(基本上可以创build一个filtersorting)。
function tag(strings, ...values) { assert(strings[0] === 'a'); assert(strings[1] === 'b'); assert(values[0] === 42); return 'whatever'; } tag `a${ 42 }b` // "whatever"
基本上它只是用console.log函数来标记“1”,就像其他函数一样。 标记函数接受模板string的parsing值和分别进行进一步任务的值。
Babel将上述代码转换为
var _taggedTemplateLiteralLoose = function (strings, raw) { strings.raw = raw; return strings; }; console.log(_taggedTemplateLiteralLoose(["1"], ["1"]));
正如你在上面的例子中看到的,在被babel转换之后,标记函数(console.log)被传递下面的es6-> 5传输代码的返回值。
_taggedTemplateLiteralLoose([“1”],[“1”]);
这个函数的返回值传递给console.log,然后打印数组。