调用动态传递给函数的参数 - JavaScript

时间:2015-11-24 05:51:31

标签: javascript function callback

我有以下功能:

function foo(f, k) {
    if (f.length > 2) {
        // how do I access the third element of f? 
        // it can be a function retry() or undefined.
        // var retry = f.arguments[2]; ?? 
        // retry();
        // console.log(f.arguments) returns undefined
    } else {
        k();
    }
}

var retry = function() { console.log("hi"); };

foo(function(x, y) { console.log(x+y); }, 
    function() { console.log("hello"); });

foo(function(x, y, retry) { console.log("retry present"); },
    function() { console.log("hello"); });

如果传入,我需要调用第三个参数。我可能会将23个参数传递给f。如果它存在,我该如何访问第三个参数?

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

编辑1

根据@ Bergi的评论

更新了代码

function print(b) {
    return (b);
}

function notify(a, b) {
    var args = arguments;
    var params = args[0].toString().split("(")[1].split(")")[0].split(",");
    if(params[2]){
    	console.log(eval(params[2])(b))
    }
}

(function () {
    var a = 10,
        b = 20;
    notify(function (a, b, print) {}, b);
})()