链调用相同的函数并修改内部变量

时间:2014-04-09 13:04:51

标签: javascript chaining

这可以用javascript吗?使用相同的功能并反复调用它。

myFunc("test")("me")("please")()

修改

感谢您的回答。我想保留和内部变量,如果可能的话,将字符串附加到前一个。

2 个答案:

答案 0 :(得分:2)

是的,您可以,return arguments.callee;,例如:

(function(param){console.log(param); return arguments.callee;})("test")("me")("please")

将登录到控制台:

test
me
please 

答案 1 :(得分:2)

function MyFunc(arg){
    console.log(arg);
    return MyFunc;
}

MyFunc("a")("b")("c");

JsFiddle example

Y-combinator示例:

function Y(f) {
    var g = f(function() {
        return g.apply(this, arguments);
    });
    return g;
}

var MyFunc = Y(function(f) {
    var a = "";
    return function(n) {
        a = a + n;
        console.log(a);
        return f;
    };
});

//alert(a); // throws error as a is outside of scope here
MyFunc("a")("b")("c"); # logs a; ab; abc