繁体   English   中英

我怎样才能让这个 javascript 函数调用自己?

[英]How can I get this javascript function to call itself?

截至目前,我的 sum 函数类似于下面的代码。 它工作并返回连续调用的总和。 但是我怎样才能在没有空括号的情况下完成这项工作呢? 就像返回 12 的theSum(5)(4)(3)

function theSum(x) {
    var total = x;

    function rec(y) {
        if (y === undefined) return total;
        total += y;
        return rec;
    };

    return rec;
}

console.log(theSum(5)(4)(3)()); // 12

这是使用 toString 方法的建议:

function theSum(x) {
    var total = x;

    function rec(y) {
        total += y;
        return rec;
    };

    rec.toString = function() { return total; }

    return rec;
}

alert(theSum(5)(4)(3));

console.log(parseInt(theSum(5)(4)(3)));

但是请注意,您需要以某种方式将返回的引用转换为字符串,以便您看到结果。

这不可能。 函数不能返回函数和整数。 您可以使theSum(5, 4, 3) = 12theSum([5, 4, 3]) = 12

闭包和 JavaScript 输入法来拯救:

function NumSumFun(initial){
    function NumSumNext(num) {
          initial+= num;
      return NumSumNext;
    }
    NumSumNext.valueOf = function () { return initial; }
    return NumSumNext;
}

var x = NumSumFun(10)(29); // ==> function 39
x + 1; // ==> 40

所以这是怎么回事。 它返回一个函数,但该函数有一个 valueOf 属性,可以访问累积值,因此该函数在用作数字时充当数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM