首页 > 解决方案 > 以闭包方式在javascript中乘以3个数字

问题描述

function fn() {
    // implementation
}
fn(2,3,4); // 24
fn(2,3)(4); // 24
fn(2)(3)(4); // 24

我无法在上面显示的示例中实现乘法。我怎样才能实现它?任何形式的帮助都非常感谢!

标签: javascript

解决方案


如果到目前为止提供的参数总数少于 3,则可以有一个函数返回自身并绑定参数:

const multiply = (...args) => (
  args.length < 3
  ? multiply.bind(null, ...args)
  : args.reduce((a, b) => a * b)
);
console.log(multiply(2, 3, 4));
console.log(multiply(2, 3)(4));
console.log(multiply(2)(3)(4));
console.log(multiply(2)(3, 4));


推荐阅读