gpt4 book ai didi

javascript - 为什么长度为 1 的数组在 JavaScript 中表现得像标量?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:57:30 25 4
gpt4 key购买 nike

例子:

let a = [1, 2]
console.log(a * 2); // NaN, this isn't Python
a = [3];
console.log(a); // an array, as expected: [3]
console.log(a * 2); // 6!

这在实践中对 Headers 对象很有用,它通常包含 1 个元素的数组:

// calculate when an API will reset its rate limit
new Date(response.headers['x-rate-limit-reset'] * 1000)

但为什么它有效?

最佳答案

这是因为在乘法过程中(*) type conversion发生:

console.log(Number([1, 2])); // NaN

console.log(Number([2])); // 2

注意:在转换为 Number 类型之前,JavaScript 会尝试将数组转换为 String,这会产生一个逗号分隔值,如 ' 1,2''2'。然后,当 JavaScript 尝试将这些字符串转换回 Number(因为我们将它们相乘)时,'1,2' 产生 NaN'2' 得到转换就好了。

自己看看:

console.log(String([1,2]));   // '1,2' (of type string)
console.log(String([2])); // '2' (of type string)
console.log(Number('1,2')); // NaN (of type number)
console.log(Number('2')); // 2 (of type number)

有关详细信息,请参阅 this .

关于javascript - 为什么长度为 1 的数组在 JavaScript 中表现得像标量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51533634/

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