如今,每个人都试图使用这些高阶函数以更少的代码来获得有希望的结果。但是我不知道这些功能在内部如何工作。
假设我写类似
var numbers = [16, 25, 36];
var results = numbers.map(Math.sqrt);
console.log(results); // [4, 5, 6]
我知道'number'数组的每个元素都在一个一个地迭代,但是怎么做呢?
我试图进行搜索,但没有得到满意的答复。
.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]
为了完全符合规范,您还需要检查the this
是一个对象,the callback
是可调用的,并检查是否存在.call
传递给第二个参数的回调myMap
,但这些细节不会对于开始理解高阶函数很重要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句