当前位置:首页 > JavaScript

js 实现mul()

2026-01-31 19:12:21JavaScript

实现 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

柯里化将多参数函数转换为单参数函数的链式调用,适合函数式编程场景。

js 实现mul()

注意事项

  • 链式调用需注意终止条件(如调用 valueOf 或固定参数数量)。
  • 动态参数方法可能因递归过深导致栈溢出,需谨慎使用。
  • 明确需求场景(固定参数数量、链式调用或直接多参数)选择合适实现。

标签: jsmul
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…