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

Javascript 在原型上实现map时增加对回调方法的理解,javascript,Javascript,myMap是我们定义的一个函数,它有一个名为callback 在myMap内部是一个forEach,它在每个数组元素上执行一次函数。我不懂这句话 var s = [23, 65, 98, 5]; Array.prototype.myMap = function (callback) { var newArray = []; this.forEach(function (a) { return newArray.push(callback(a)); }); retur

myMap
是我们定义的一个函数,它有一个名为
callback
myMap
内部是一个
forEach
,它在每个数组元素上执行一次函数。我不懂这句话

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;
});
所以
push()
newArray

MDN推送():-

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

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

回调(a)
的返回值只有一个参数

为什么不只是推一下

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

如果您没有通过回调函数传递
a
,它就不会被转换,而您只是在进行浅层复制。

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

  • push()
  • …自动传递一个参数(迭代数组项)
回调(a)
在本例中实际上是一个对象或参数。
push
将调用
callback(a)
的结果推送到数组中。实际上与此相同:

var项=回调(a);
newArray.push(项目);

但是您直接推送回调的结果,而不是先将其存储在变量中。

return
inside
forEach
是没有意义的。我认为您只是出于某种原因感到困惑
.push(callback(a))
可以很容易地替换为
var result=callback(a)。。。推(结果)
更清楚地表明这只是一个参数。从未将函数调用的结果传递给另一个函数调用吗?
return newArray.push(callback(a));