像 .map() 这样的高阶函数在 JavaScript 内部是如何工作的?

2024-01-30

现在每个人都尝试使用这些高阶函数 https://en.wikipedia.org/wiki/Higher-order_function通过编写更少的代码获得有希望的结果。但我想知道这些函数内部是如何工作的。

假设我写了类似的东西

var numbers = [16, 25, 36];
var results = numbers.map(Math.sqrt);
console.log(results); // [4, 5, 6]

我知道“number”数组的每个元素都在逐一迭代,但是how?

我试图寻找它,但尚未得到满意的答案。


.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]

为了完全符合规范,您需要还需要 https://tc39.es/ecma262/#sec-array.prototype.map除其他事项外,要检查this是一个对象,即callback是可调用的,并且.call第二个参数传递给的回调myMap如果有的话,但这些细节对于开始理解高阶函数来说并不重要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

像 .map() 这样的高阶函数在 JavaScript 内部是如何工作的? 的相关文章

随机推荐