Javascript:Array(3).map() 与 [...Array(3)].map() 行为毫无意义

问题描述 投票:0回答:1

Chrome 版本 125.0.6422.76(官方版本)(64 位)中,我在

Array
构造函数中看到了这种奇怪的行为:

Javascript: Array(3).map() vs [...Array(3)].map() weird behavior

请注意,

a
的长度在内部正确存储为
3

我不太关心 Javascript 是否通过稍后(例如,在元素分配期间)延迟分配

3
(或更多)元素来进行内部优化,只要将长度为
3
的数组作为
map 的对象返回即可
致电
a.map()

显然,事实并非如此,因为没有像

foo
那样打印出
b.map()

javascript arrays
1个回答
0
投票

当您使用

Array
构造函数初始化数组时,它是一个空数组。是的,它有一个长度,这意味着 JS 为将来的用例存储了一块内存,但它完全是空的。所以,没有什么可以迭代的。

在第二种情况,

b
数组中,有一个包含未定义元素的数组。所以,你可以迭代它。

© www.soinside.com 2019 - 2024. All rights reserved.