美文网首页
实现一个无限累加计算参数值的函数

实现一个无限累加计算参数值的函数

作者: mills_han | 来源:发表于2019-05-07 11:14 被阅读0次

    我们看一个常见的面试题,用 JS 实现一个无限累加的函数 add,示例如下:

    add(1); // 1
    add(1)(2);  // 3
    add(1)(2)(3); // 6
    add(1)(2)(3)(4); // 10 
    
    // 以此类推
    

    仔细看,其实都是将函数作为返回值输出,然后接收新的参数并进行计算。
    我们知道打印函数时会自动调用 toString()方法,函数 add(a) 返回一个闭包 sum(b),函数 sum() 中累加计算 a = a + b,只需要重写sum.toString()方法返回变量 a 就可以了。

    function add(a) {
        function sum(b) { // 使用闭包
            a = a + b; // 累加
            return sum;
        }
        sum.toString = function() { // 重写toString()方法
            return a;
        }
        return sum; // 返回一个函数
    }
    
    add(1); // 1
    add(1)(2);  // 3
    add(1)(2)(3); // 6
    add(1)(2)(3)(4); // 10 
    

    相关文章

      网友评论

          本文标题:实现一个无限累加计算参数值的函数

          本文链接:https://www.haomeiwen.com/subject/lfxeoqtx.html