js 实现mul()
实现 mul() 函数的方法
在 JavaScript 中实现 mul() 函数,通常指创建一个可以连续调用的乘法函数,例如 mul(2)(3)(4) 返回 24。以下是几种实现方式:
基础链式调用实现
通过闭包和函数链式调用实现连续乘法:
function mul(x) {
return function(y) {
return function(z) {
return x * y * z;
};
};
}
console.log(mul(2)(3)(4)); // 输出 24
此方法固定参数数量(如 3 个参数),适合明确参数数量的场景。
动态参数链式调用
使用递归和 valueOf 实现无限链式调用:

function mul(x) {
const product = (y) => mul(x * y);
product.valueOf = () => x;
return product;
}
console.log(mul(2)(3)(4).valueOf()); // 输出 24
console.log(mul(2)(3)(4)(5).valueOf()); // 输出 120
通过重写 valueOf 方法,可以在调用链结束时获取结果。
使用 reduce 实现可变参数
通过数组和 reduce 方法处理可变数量的参数:

function mul(...args) {
return args.reduce((acc, val) => acc * val, 1);
}
console.log(mul(2, 3, 4)); // 输出 24
console.log(mul(2, 3, 4, 5)); // 输出 120
此方法直接接收多个参数,适用于非链式调用的场景。
柯里化实现
使用柯里化技术分步处理参数:
const mul = x => y => z => x * y * z;
console.log(mul(2)(3)(4)); // 输出 24
柯里化将多参数函数转换为单参数函数的链式调用,适合函数式编程场景。
注意事项
- 链式调用需注意终止条件(如调用
valueOf或固定参数数量)。 - 动态参数方法可能因递归过深导致栈溢出,需谨慎使用。
- 明确需求场景(固定参数数量、链式调用或直接多参数)选择合适实现。






