调用动态传递给JavaScript的参数

Invoking dynamically passed arguments to a JavaScript

本文关键字:JavaScript 参数 动态 调用      更新时间:2023-09-26

我有以下功能:

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

根据@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);
})()