在使用 Array.apply 创建数组时,我对它的行为感到困惑。
请参阅以下代码:
Array.apply(null, { length: 6 })
Array.apply(null,new Array(6))
两者都输出 [undefined, undefined, undefined, undefined, undefined, undefined],正如您所期望的那样,是一个包含 6 个元素的数组。另一方面,如果您使用以下代码片段:
Array.apply(null, [6])
在这个例子中,输出是 [undefined × 6],这没有任何意义。
有人对这种行为有解释吗?
最佳答案
需要记住的一些事情:
Array(6); // Creates an array containing six empty slots
Array(null); // Creates an array containing one null
Array(6,6,6); // Creates an array containing three 6
[6]; // Creates an array containing one 6
[null]; // Creates an array containing one null
[6,6,6]; // Creates an array containing three 6
基本上,当使用单个数字参数调用Array
时,该值被认为是数组的长度,而不是数组的第一项。
两者
Array.apply(null, { length: 6 });
Array.apply(null, new Array(6))
表现得像
Array(undefined, undefined, undefined, undefined, undefined, undefined);
因此他们创建了一个包含 6 个未定义
的数组。
但是
Array.apply(null, [6]);
就像
Array(6);
因此它创建了一个包含 6 个空槽的数组。
关于javascript - 使用数组。 apply 生成数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39810931/