任意数求和?

1.有漏洞不完整的任意求和

 //任意数求和
    function sum(){
        var total=null;
        for(var i=0;i<arguments.length;i++){
           var num=arguments[i];
           //console.log(num); 1 2 'abc' NaN 10
           if(typeof num === 'number' && !isNaN(num)){
              total+=num;
              console.log(total);//1 3 13
           }
        }
        return total;
    }
    console.log(sum(1,2,'abc',NaN,10))
复制代码

2.稍微修改了一些的任意数求和

//如果当前参数可以转换成数字 我就累加(允许纯数字字符串)
    function sum(){
        var total=null;
        for(var i=0;i<arguments.length;i++){
           //console.log(arguments);
           //console.log(arguments[i]);
           console.log('转换前1',arguments[i])

           //num变量用来存储 转换后的值
           var num=Number(arguments[i]);
           console.log('转换后2',num)//1 2 10 123

           if(!isNaN(num)){
              total+=num;
              console.log(total);// 1 3 13 136
           }
        }
        return total;
    }
    console.log(sum(1,2,10,'123','10px'));
复制代码

3.比较完整,解决了很多漏洞的任意数求和

function sum(){
         var total=0;
         for(var i=0;i<arguments.length;i++){
            // var num = Number(arguments[i]) // '123'
            // var num = parseInt(arguments[i]) // '10px'
            var num=parseFloat(arguments[i])
            if(!isNaN(num)){
              total+=num;
              console.log(total);// 1 3 13 136 146.5  
            }
           
         }
         return total;
    }
    console.log(sum(1,2,10,'123','10.50px'))//146.5
复制代码

!!! 重要:不能把var total=0放在for循环里面
 function sum(){
         for(var i=0;i<arguments.length;i++){
            var total=0; //如果total放在for循环里面的话,total的值每次都是0
            //console.log(arguments);
            var num=parseFloat(arguments[i])
            //console.log(num); 1 2 10 123 10.5
            if(!isNaN(num)){
              //console.log(total) 输出5次0 
              total+=num;
              console.log(total) //1 2 10 123 10.5
            }
           
         }
         return total;
    }
    console.log(sum(1,2,10,'123','10.50px'))
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值