js 实现mul()
实现 mul() 函数的方法
使用闭包和函数柯里化
闭包可以保存函数的状态,使得每次调用时能够累积参数。以下是一个典型的实现方式:
function mul(x) {
return function(y) {
return function(z) {
return x * y * z;
};
};
}
console.log(mul(2)(3)(4)); // 输出 24
使用递归和参数收集
通过递归调用和参数收集,可以处理不定数量的参数:
function mul(...args) {
if (args.length === 0) return 0;
return args.reduce((acc, val) => acc * val, 1);
}
console.log(mul(2, 3, 4)); // 输出 24
支持链式调用
如果需要链式调用,可以通过返回函数自身来实现:
function mul(x) {
let product = x;
const fn = function(y) {
product *= y;
return fn;
};
fn.valueOf = function() {
return product;
};
return fn;
}
console.log(mul(2)(3)(4)); // 输出 24
处理边界情况
在实际应用中,可能需要处理一些边界情况,比如零参数或非数字参数:
function mul(...args) {
if (args.length === 0) return 0;
if (args.some(arg => typeof arg !== 'number')) {
throw new Error('所有参数必须是数字');
}
return args.reduce((acc, val) => acc * val, 1);
}
console.log(mul(2, 3, 4)); // 输出 24
使用 ES6 的箭头函数简化
箭头函数可以使代码更简洁:

const mul = x => y => z => x * y * z;
console.log(mul(2)(3)(4)); // 输出 24
这些方法可以根据实际需求选择,每种方法都有其适用的场景。






