在测试 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是一个新标准)还是出于某种原因预期这种行为?