在原型上实现映射时增加对回调方法的理解

问题描述 投票:-1回答:2
var s = [23, 65, 98, 5];

Array.prototype.myMap = function (callback) {
  var newArray = []; 
  this.forEach(function (a) {
    return newArray.push(callback(a));
  }); 
  return newArray;
};

var new_s = s.myMap(function (item) {
  return item * 2;
});

myMap是我们定义的函数,它具有一个称为callback的参数myMap内部是一个forEach,它对每个数组元素执行一次功能。这行我听不懂

return newArray.push(callback(a));

所以push()newArray

MDN push():-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push

但是push()仅接受一个参数。那么为什么我们有.push(callback(a))为什么不只是.push(a)

javascript
2个回答
0
投票

但是push()仅接受一个参数。那么为什么会有.push(callback(a))

callback(a)的返回值仅一个参数。

为什么不只是.push(a)?

映射点是获取数据数组并创建一个新数组,在其中以某种方式每个项目都已转换

如果您不通过回调函数传递a,则不会对其进行转换,而只是进行浅表复制。


0
投票

语法push(callback(a))表示:

  • push()本身接受一个参数,一个回调,它...
  • ...自动传递一个参数(迭代数组项)
© www.soinside.com 2019 - 2024. All rights reserved.