javascript - `Array.from({length: 5}, (v, i) => i)` 是如何工作的?

标签 javascript arrays ecmascript-6

我可能在这里遗漏了一些明显的东西,但有人可以一步一步地分解为什么 Array.from({length: 5}, (v, i) => i) 返回 [0 , 1, 2, 3, 4]?

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/from

我没有详细了解为什么会这样

最佳答案

当 Javascript 检查一个方法是否可以被调用时,它使用 duck-typing .这意味着当你想从某个对象调用方法 foo 时,它应该是 bar 类型,然后它不会检查这个对象是否真的是 bar 但它检查它是否有方法 foo

因此在 JS 中,可以执行以下操作:

let fakeArray = {length:5};
fakeArray.length //5
let realArray = [1,2,3,4,5];
realArray.length //5

第一个类似于 fake javascript 数组(具有属性 length)。当 Array.from 获取属性 length 的值(在本例中为 5)时,它会创建一个长度为 5 的真实数组。

这种fakeArray 对象通常称为arrayLike

第二部分只是一个箭头函数,它用索引值(第二个参数)填充数组。

此技术对于模拟某些对象进行测试非常有用。例如:

let ourFileReader = {}
ourFileReader.result = "someResult"
//ourFileReader will mock real FileReader

关于javascript - `Array.from({length: 5}, (v, i) => i)` 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40528557/

相关文章:

php - 优化 AJAX 网站以使用最少的资源

javascript - 生成器 + Promise 解释

javascript - 多行函数调用的 eslint 规则

angularjs - 如何访问 Angular 1.6/es6 应用程序上的表单对象?

javascript - image onclick() 函数显示带有表单详细信息的对话框窗口

javascript - 检查 JavaScript 中的 'undefined' && ip 格式不起作用

javascript - 将授权 header 添加到 GET 请求

javascript - 过滤重复键

java - Array.sort 只返回 0 个值。数组大小正确并且数组已完全填充

java - 采集接口(interface)