map函数为什么传入的参数写法不一样,结果也不一样
fn就是一个函数(经过柯里化处理,再传一个参数就会执行)
map里面直接传和用一个匿名函数包裹了传 按我的理解应该是一样的。为什么打印的结果区别这么大
const curry = function(fn){
return function curried(...args){
if(fn.length===args.length){
return fn.apply(this,args)
}else{
return function(...args1){
return curried.apply(this,args.concat(args1))
}
}
}
}
const prop = curry(function (key, obj) {
return obj[key]
});
const personList = [{name: 'kevin'}, {name: 'daisy'}]
const fn = prop('name')
console.log(
personList.map((item)=>{
return fn(item)
}),
personList.map(fn)
)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,fn是这个东西
这个函数内部调用curried,curried一个参数还是两个参数是有区别的,这个参数是根据fn的参数来的
这种写法fn的参数是一个,执行的是
fn.apply(this,args)
下面的写法是接受了map的默认参数,而map默认三个参数,所以执行了下面的代码