如何实现可接收任意数量整数参数并返回所有参数乘积的JS函数
实现接收任意数量整数参数的乘积函数
方案1:ES6+ 推荐写法
使用剩余参数语法结合reduce方法实现,逻辑简洁易维护:
function multiplyAll(...args) { return args.reduce((accumulator, currentValue) => accumulator * currentValue, 1) }
- 无需预先定义参数数量,
...args会自动将所有传入的参数整合成一个数组 - 初始计算值设为1,符合数学上空乘积的定义,无参数传入时返回1
- 支持任意数量参数调用,例如
multiplyAll(2,3,4)返回24,multiplyAll(1,2,3,4,5,6,7,8,9,10)返回3628800
方案2:兼容旧环境写法
如果运行环境不支持ES6语法,可以通过函数内置的arguments对象实现:
function multiplyAll() { var product = 1 for (var i = 0; i < arguments.length; i++) { product *= arguments[i] } return product }
可选:增加整数合法性校验
如果需要严格限制传入参数必须为整数,可以增加校验逻辑:
function multiplyAll(...args) { return args.reduce((acc, cur) => { if (!Number.isInteger(cur)) { throw new TypeError(`传入参数 ${cur} 不是合法整数`) } return acc * cur }, 1) }
内容的提问来源于stack exchange,提问作者Rasheed abiodun
相关产品推荐
相关产品推荐

