javascript - .map() 在这种情况下在做什么?

标签 javascript

使用 Chrome 控制台,这是我的输入和输出:

[0].map(Array);

[[0, 0, [0]]]; // output

这里发生了什么?

编辑

这让我好奇的原因是因为像

[0].map(String);

会回来

["0"];

而不是

["0", "0", "String"]

最佳答案

.map() function正在使用三个参数调用 Array() 函数,数组元素的值为 0,该元素的索引,也是 0 ,以及对整个数组的引用。

所以就像这样做:

var a = [0];
var index = 0
Array(a[index], index, a);   // create array with three elements

Array() 返回的数组随后成为 .map() 创建的数组的第一个元素,因此在您的 中嵌套了额外的层次[[0, 0, [0]]] 结果。

关于您的编辑的编辑:当您说 [0].map(String); 导致 String() 被调用时使用相同的三个参数,如 String(a[index], index, a),但是 String() 函数忽略除第一个参数之外的所有参数,而 Array() 使用所有参数提供的参数。

关于javascript - .map() 在这种情况下在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46230125/

相关文章:

javascript - 为什么元素列表没有显示?

javascript - 将数组附加到 div

javascript - 如何在 jQuery 或 JS 中使用 Laravel URL::asset

javascript - 为什么 window.onload 有效而 onload =""不起作用

javascript - 一个 django 表单,有两个输入、两个 url、两个 View ,下一页都有不同的 js

javascript - 在 Android 网页中禁用缩放输入焦点

javascript - 如何知道 npm `unzip` 模块何时完成解压缩文件?

javascript - 国际化 : NS_ERROR_DOM_BAD_URI: Access to restricted URI denied

javascript - XHR的asnyc参数设置为TRUE时不返回任何内容

javascript - 调试 JavaScript 是否与调试 C++/C#/Java 应用程序一样简单?