JavaScript实现链式调用add(1)(2)(3)的两种方案

作者:拾光

时间:2026-10-29

浏览:99

本文介绍JavaScript中实现类似add(1)(2)(3)链式调用的两种方法。第一种通过固定层级嵌套函数实现固定参数求和;第二种利用闭包累加值,并重写函数的toString或valueOf方法,从而支持任意数量参数的连续调用与最终数值获取,解决链式调用返回函数对象的问题。

文章目录

固定参数链式调用实现

代码如下:

var add = function(a){
return function(b){
return function(c){
return a+b+c;
        };
    };
};
add(1)(2)(3); //6

这种写法虽然能实现固定参数的链式调用,但如果需要像add(1)(2)(3)(4)这样处理四个或更多参数的情况,上述固定层级的写法显然不再适用。

为了实现支持任意参数数量的链式调用,核心思路是执行一个函数后返回函数自身,从而允许继续接收参数。

支持任意参数的链式调用方案

代码如下:

function add(x) {
var sum = x;
var tmp = function (y) {
sum = sum + y;
return tmp;
    };
tmp.toString = function () {
return sum;
    };
return tmp;
}
console.log(add(1)(2)(3)); //6
console.log(add(1)(2)(3)(4)); //10

然而,上述代码在计算完成后仍然返回tmp函数对象,无法直接获取数值结果。在JavaScript中,当对对象进行打印或数学运算时,引擎会分别调用toString或valueOf方法。因此,我们需要重写tmp函数的toString(以及可选的valueOf)方法,使其返回累加的sum值,从而在链式调用结束时输出正确的数字结果。

以上就是本文的全部内容了,希望大家能够喜欢。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章