javascript - 使用数组。 apply 生成数组

标签 javascript

在使用 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/

相关文章:

javascript - 使用 CSS 或 jQuery 保持图像的纵横比?

javascript - 如何清除单选按钮?

javascript - 学位文本需要在javascript中对齐

javascript - ng 如果字符串包含 Angular

php - 从变量获取值,发送到 php 进行处理并将该值添加到 mysql 数据库?

javascript - 保持网站高度

javascript - 如何从嵌套的 jquery 回调函数返回 true/false

javascript - 缩小 Angular 不更新模板?

javascript - 为什么 Visual Studio Node.js 项目使用 shebang/bash 脚本来启动服务器?

javascript - 每第二个周期后添加换行符