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