reduce()方法

reduce()方法

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        const add = (...args) =>{

            // 在此补充代码
            let sum=0;
            function getSum(a, b) {
                console.log(a+'<--------');
                console.log(b);
                return a + b;
            }
            sum=args.reduce(getSum);
            console.log(sum);
            console.log(typeof sum);
            return sum;
        }
       document.write(add(1,2,3,4,5))
    </script>
</body>
</html>

https://img1.sycdn.imooc.com//climg/6141d197094be55c04540627.jpg

https://img1.sycdn.imooc.com//climg/6141d1c1099c09bb04630372.jpg

为什么getSum()方法能作为reduce方法的参数?为什么getSum()方法要写成含有两个参数,并且返回两个参数之和的形式?

getSum()方法中的参数a,还在累加求和,似乎是getSum()方法执行了多次,没有循环怎么还能执行这么多次getSum()方法?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,解答如下:

1、reduce方法的第一个参数本身就要求是函数形式,所以可以把getSum写在里面。即如下两种写法等价:

写法1(常见用法):

https://img1.sycdn.imooc.com//climg/61429ebd094ccf8606820163.jpg

写法2:

https://img1.sycdn.imooc.com//climg/61429eea0962774e04770176.jpg

2、reduce方法是js提供的一个“封装过的(处理过的)”方法。虽然它的基本使用,看起来只有如下一点代码:

数组.reduce(callback(acl, val))

但是它底层有很多其他代码,这些代码限制了reduce的参数形式、运算过程(有循环)、返回值;而对于使用者(我们),不需要关注它的底层实现,只需要按照它的要求传参、按照它的功能会使用就行。

总结一句话,reduce是js提供的一个方法,它的参数形式、使用方式、返回值都是固定好的,我们只需要按照它的要求去用就行,是固定用法。

更多使用方式,如果有精力,可以查看一下图文节:

https://class.imooc.com/lesson/1973#mid=46777

祝学习愉快!

  • 电磁护盾 提问者 #1

    如果getSum方法作为reduce方法的参数,是不是相当于reduce方法内部调用了getSum方法

    ​那么应该就是reduce方法内部有循环多次执行了getSum方法,所以作为参数的getSum方法才会多次执行。

    2021-09-16 17:57:34
  • 好帮手慕久久 回复 提问者 电磁护盾 #2

    同学你好,理解的是对的。

    祝学习愉快!

    2021-09-16 18:18:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师