封装一个函数使得数组内的任意项求和

625 阅读1分钟

封装函数

1、例如我们的需求是输出sum( 1,3,NaN,'qqq','4')的和为8
function sum() {
        var t = 0
        for (var i = 0; i < arguments.length; i++) {
            //arguments[i]对应的就是每一个实参
            //t+=arguments[i] //不考虑非合法数字
            if (!isNaN(arguments[i])) {
                //得是数字而且还不能是NaN
                t += arguments[i] / 1
            }
        }
        return t
    }
    console.log(sum(1, 3, NaN, 'qqq','4'))

关键点

此函数主要的关键点在 arguments[i] 这里 arguments代表实参的集合在我们不知道到底需要多少实参时用arguments......... (注 arguments在箭头函数中不存在所以不能在箭头函数中使用)

其次 for (var i = 0; i < arguments.length; i++)这段代码是循环需要的实参相加 if (!isNaN(arguments[i]))判断其中每一个实参是否是数字且不是NaN(因为NaN和任何数字运算都是NaN)

t += arguments[i] / 1这段代码的作用是把不是NaN的项相加 其中/的作用是将字符串型的数字转成Number类型