在测试JavaScript ES6的新模板字符串时(在Firefox中,如果它很重要),我注意到它们的类型有些不一致.
我定义了一个自定义函数,如下所示:
function f(a) {
console.log(typeof(a));
console.log(a);
}
Run Code Online (Sandbox Code Playgroud)
首先,我使用模板字符串周围的括号测试了"正常"功能.
f(`Hello, World!`)
Run Code Online (Sandbox Code Playgroud)
正如所料,这产生了一种类型string
并Hello, World!
输出到控制台.
然后我调用函数速记,没有括号,并且发生了不一致.
f`Hello, World!`
Run Code Online (Sandbox Code Playgroud)
类型变为object
,并Array [ "Hello, World!" ]
输出到控制台.
使用第二种方法时,为什么模板字符串包含在数组中?这只是Firefox中的一个错误(毕竟ES6 是一个新标准)还是出于某种原因预期会出现这种情况?