锦绣前程3future
2020-12-14 00:44
采纳率: 92.3%
浏览 21

JS求助,不明白逻辑,恳请大佬解答

function add(){

    let sum = 0;

    for(let i = 0, j=arguments.length ; i < j ; i++) {

        sum += arguments[i];

    }

    return sum;

}

 

let sum = add(1,2,3,4,5,6,7,8,9,10);

console.log(sum);

 

求助大佬:最终输出的是55,是什么逻辑

 

逻辑是不是【let sum = add(1,2,3,4,5,6,7,8,9,10);】传入到了函数中,【 j=arguments.length ;】获取到数字为9?然后再进行【 i < j ; i++】判断,,那么i此时的数值就是0-8;那么就相当于将0+(0-8)赋值给了sum,不应该输出的结果是0-8吗

 

 

 

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

16条回答 默认 最新

  • qq_1872583947 2020-12-14 15:52
    已采纳

    已采纳该答案
    打赏 评论
  • 无厘头编程 2020-12-14 02:43

    1..10 不就是 10 嘛。arguments.length = 10。

    打赏 评论
  • bosaidongmomo 2020-12-14 08:42

     

    打赏 评论
  • BHFloV 2020-12-14 09:06

    arguments是函数默认附带的隐形参数,它是用数组返回所有传入函数里的形参。根据上述add函数来讲,传入十个形参,意味着arguments数组length为10,然后就是数组参数的累加。

    与之相似的还有rest参数,它放置在函数末尾,用于接收自定义形参外的剩余参数。若是直接传入形参...rest,其效果在当前编写的add函数中,与arguments是一样的。

    打赏 评论
  • 禅思院 2020-12-14 09:13

    基础不行啊

    打赏 评论
  • 禅思院 2020-12-14 09:13
    打赏 评论
  • 禅思院 2020-12-14 09:14

    这上面有详细的文档

    打赏 评论
  • 锦绣前程3future 2020-12-14 12:44

     谢谢大家回复,很久没玩csdn了

    arguments.lengh ;相当于获取到的数组内容个数,是这样吗
    那么长度为10,,编号为0-9


    我想问下为啥输出的是55,能讲下逻辑吗

    打赏 评论
  • qq_1872583947 2020-12-14 13:52

    arguments参数了解一下:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments

    在for循环里不是做了累加计算吗。

    在此例子里边arguments可以这么看 arguments = [1,2,3,4,5,6,7,8,9,10]

    这就是一个数组累加,知识点是arguments

    打赏 评论
  • 锦绣前程3future 2020-12-14 15:34

    能讲下为啥输出55吗,,逻辑

    打赏 评论
  • bosaidongmomo 2020-12-14 15:38

    一个for循环叠加 有什么逻辑?

    打赏 评论
  • 锦绣前程3future 2020-12-14 22:05

    为啥sum=45+10,这个10我能明白,这个45咋来的

    打赏 评论
  • qq_1872583947 2020-12-15 08:47

    sum += arguments[i] 是 sum = sum + arguments[i]  的简写,从右往左计算,将argument[i]值加上sum值(之前计算得到)重新赋值给sum值

    打赏 评论
  • 锦绣前程3future 2020-12-15 09:20

    我能明白,最终返回的这个sum是相当于这个数组跑一遍相加的组合体对吗

    打赏 评论
  • qq_1872583947 2020-12-15 09:24

    对啊,这就是实现了1-10的累加

    打赏 评论
  • 锦绣前程3future 2020-12-15 23:50

    谢谢

    打赏 评论