gpt4 book ai didi

javascript - 为什么 `new Array(new Number(3))` 不生成长度为 3 的数组?

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

当我在控制台中编写 new Array(new Number(3)) 时,它会生成一个长度为 1 的数组,该项目是一个 Number 对象,其中 valueOf=3。为什么数组构造函数对待 new Number(3)3 的原始版本不同?

  1. 有人可以将我链接到指定此 Array 行为的标准文档吗?
  2. 这是我通常需要注意的事情,还是特定于 Array 构造函数?

谢谢!

最佳答案

因为在 new Array(new Number(3)) 中,参数 new Number(3) 返回一个 object 而不是 编号

new Array(Number(3)) 将作为 Number(3) 返回 3,即数字。

感谢@Andreas' comment ,这里是规范:ECMAScript 22.1.1.2 Array (len)

Step 7: "If Type(len) is not Number, then

  1. Let defineStatus be CreateDataProperty(array, "0", len).
  2. Assert: defineStatus is true.
  3. Let intLen be 1.

关于javascript - 为什么 `new Array(new Number(3))` 不生成长度为 3 的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52580398/

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