现在每个人都试图使用这些高阶函数来通过编写更少的代码来获得有希望的结果。但我想知道这些函数内部是如何工作的。
假设我写了类似的东西
var numbers = [16, 25, 36]; var results = numbers.map(Math.sqrt); console.log(results); // [4, 5, 6]
我知道“number”数组的每个元素都在逐一迭代,但是如何?
我试图寻找它,但尚未得到满意的答案。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我想每个供应商都应该按照 规格
实际实现(例如 V8)可能有点复杂,请参阅此答案作为开始。您也可以参考 github 中的 v8 源码,但孤立地理解其中的一部分可能并不容易。
引用上面的答案:
ES2015 规范:
"length"))。.map只是一个接受回调、为数组的每个项目调用回调并将值分配给新数组的方法。没什么特别的。您甚至可以自己轻松实现:Array.prototype.myMap = function(callback) { const newArr = []; for (let i = 0; i < this.length; i++) { newArr.push(callback(this[i], i, this)); } return newArr; } var numbers = [16, 25, 36]; var results = numbers.myMap(Math.sqrt); console.log(results); // [4, 5, 6]