javascript - reduce的一个问题
本文介绍了javascript - reduce的一个问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
`var _slice = Array.prototype.slice;
function fn(fn1){
var a = _slice.call(arguments,1)
console.log(a);
return function(){
var b = _slice.call(arguments);
console.log(b);
var arr = a.concat(b);
console.log(arr);
return fn1.apply(null,arr)
}
}
function add(c){
function add1 (prev,next){
return prev+next;
};
return c.reduce(add1)
}
// alert(add([2,3]))
alert(fn(add,1)(2,3))`
是不是访问不到里面的?
解决方案
改下 return fn1.apply(null,arr)
,用 call 试一试,改成 return fn1.call(null,arr)
。
ps:以后尽量贴代码,不要贴图片,不好修改。
--- 添加内容
apply 也可以,要这样用:
return fn1.apply(null,[arr])
要理解 apply 传入的数组的含义,数组的第一个元素对应函数的第一个参数,以此类推。所以,你的写法是错误的。
这篇关于javascript - reduce的一个问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文