gpt4 book ai didi

javascript - 为什么要预先设置 JavaScript 数组的大小?

转载 作者:行者123 更新时间:2023-12-03 13:35:24 25 4
gpt4 key购买 nike

Firebug 代表(new Array(N))作为具有 N 的数组undefined s 在里面。我最近遇到了一个场景,该场景展示了一个大小为 undefined 的数组。其中的值与新构造的、大小不同的数组不同。我想了解其中的区别。

假设您要生成 0 到 1000 之间的随机整数列表。

function kilorange() {
return Math.floor(Math.random() * (1001));
}

no_random_numbers = (new Array(6)).map(kilorange);
my_random_numbers = [undefined, undefined, undefined,
undefined, undefined, undefined].map(kilorange);

我会期待 no_random_numbersmy_random_numbers是等价的,但他们不是。 no_random_numbersundefined 的另一个数组s,而 my_random_numbers是一个包含六个随机整数的数组。此外,在抛出 console.count 之后声明为 kilorange ,我了解到我的函数永远不会为使用 Array 构造函数创建的数组调用。

有什么区别,为什么 map (可能还有其他可迭代的方法)不将上述数组视为相同?

最佳答案

ES standard (15.4.4.19) 定义 map 的算法,并且从步骤 8b 中可以清楚地看出,由于您的数组实际上没有任何这些元素,因此它将返回一个长度为 6 的“空”数组。

正如其他人所提到的,这与 js 中的数组对象(不像它们的刚性 C 对应物)非常动态,并且可能是稀疏的(参见 15.4 的稀疏性测试算法)有关。

关于javascript - 为什么要预先设置 JavaScript 数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7782887/

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