【发布时间】:2015-08-29 07:25:14
【问题描述】:
在测试 JavaScript ES6 的新模板字符串时(在 Firefox 中,如果重要的话),我注意到它们的类型有些不一致。
我定义了一个自定义函数,如下所示:
function f(a) {
console.log(typeof(a));
console.log(a);
}
首先,我“正常”地测试了函数,在模板字符串周围使用括号。
f(`Hello, World!`)
正如预期的那样,这产生了string 的类型,并且Hello, World! 被输出到了控制台。
然后我调用了函数简写,没有括号,出现了不一致。
f`Hello, World!`
类型变成object,Array [ "Hello, World!" ]输出到控制台。
为什么在使用第二种方法时模板字符串被包裹在一个数组中?这只是 Firefox 中的一个错误(毕竟,ES6 是一个新标准)还是出于某种原因会出现这种行为?
【问题讨论】:
-
尝试
console.log`a ${1} b ${2} c`;以更好地了解正在发生的事情。通过省略括号,您完全改变了语句的含义:您不再只是简单地调用函数,而是使用了标记模板。是的,这种语法很烂。
标签: javascript ecmascript-6 template-strings