gpt4 book ai didi

javascript - JavaScript ES6 模板字符串的类型不一致

转载 作者:数据小太阳 更新时间:2023-10-29 04:49:25 26 4
gpt4 key购买 nike

在测试 JavaScript ES6 的新模板字符串时(在 Firefox 中,如果它重要的话),我注意到它们的类型有些不一致。

我定义了一个自定义函数,如下所示:

function f(a) {
console.log(typeof(a));
console.log(a);
}

首先,我“正常”测试了函数,在模板字符串两边使用括号。

f(`Hello, World!`)

正如预期的那样,这产生了一种类型的 string 并且 Hello, World! 被输出到控制台。

然后我简写调用函数,没有括号,结果不一致。

f`Hello, World!`

类型变成了objectArray [ "Hello, World!"] 被输出到控制台。

为什么使用第二种方法时模板字符串被包裹在一个数组中?这只是 Firefox 中的一个错误(毕竟 ES6 是一个新标准)还是出于某种原因这种行为是预期的?

最佳答案

// A function call, passed the result of a template literal.
f(`str`)

// A tagged template call, passed metadata about a template.
f`str`

不一样。第一个以单个字符串作为参数调用 f。第二个调用带有多个参数的 f,具体取决于模板。例如

f`one${2}three${4}five`

会通过 f

f(strings, ...values)

strings
// ['one', 'three', 'five']

这是模板所有字符串部分的列表,

values
// [2, 4]

这是适合字符串之间的所有值。这允许标签预处理字符串并对其进行处理。

documentation on MDN can help more .

关于javascript - JavaScript ES6 模板字符串的类型不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32279252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com