javascript - reduce的一个问题

查看:86
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆