请老师帮忙看下,为什么我的返回是NaN呀?

请老师帮忙看下,为什么我的返回是NaN呀?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>arguments</title>

</head>

<body>

    <script>

function avg(){

    var sum=0,len=arguments.length,i;

    for(i=0;i<=len;i++){

        //求和

        sum+=arguments[i];

    }

    //求平均值

    return sum/len;

};

//取整

var a=parseInt(avg(1,2,3,4,5));

alert(a);

</script>

</body>

</html>


正在回答

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

2回答

你好,

因为i值从0开始的,数组中第一项索引也为0。如果数组长度为5,那么获取数组中最后一项就是arr[4],所以这里i值不能等于len,因为arr[5]项是不存在的。例如:

http://img1.sycdn.imooc.com//climg/5d3bb8b9000119f503160250.jpg

可以再测试理解下,祝学习愉快!

好帮手慕星星 2019-07-26 13:38:58

同学你好,是for循环条件的问题,参考修改:

http://img1.sycdn.imooc.com//climg/5d3a91bd0001616205010570.jpg

i是从0开始的,所以i值小于len就可以,不用等于len,索引为len的值是不存在的,所以之前的结果是NaN,可以重新测试下。

祝学习愉快!

  • 提问者 Elisa呀 #1
    试了一下,确实可以了,谢谢老师,但是还是不太理解,为什么不能等于len呀,len不就是长度吗?输入两个值len就是2,输入3个值就是3不是吗
    2019-07-26 20:45:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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