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))`
    
    
    

图片描述

图片描述

是不是访问不到里面的?

阅读 1.7k
1 个回答

改下 return fn1.apply(null,arr),用 call 试一试,改成 return fn1.call(null,arr)

ps:以后尽量贴代码,不要贴图片,不好修改。

--- 添加内容

apply 也可以,要这样用:

return fn1.apply(null,[arr])

要理解 apply 传入的数组的含义,数组的第一个元素对应函数的第一个参数,以此类推。所以,你的写法是错误的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题