JavaScript / JQuery - 您可以传递对函数的引用然后执行它吗?

时间:2010-10-12 18:34:45

标签: javascript jquery function

根据下面的JavaScript示例,有没有办法将函数f的引用传递给promptForProceed函数并在promptForProceed中有条件地执行?

如果f函数采用了一些参数(例如:f(a, b, c) { ... }),你也可以这样做吗?

function f() {
    //Do stuff..
}

function promptForProceed(myFunction) {  // <------ PASS FUNCTION AS PARAMETER
    $("#div-dialog-proceed").dialog({
        modal: true,
        buttons: {
            "Stay on current page": function () {
                $(this).dialog("close");
            },
            "Continue": function () {
                $(this).dialog("close");
                myFunction(); // <---------  CALL FUNCTION
            }
        }
    });
}

更新:我想我喜欢使用匿名函数参数的选项:

promptForProceed(function() { //Do stuff like call f(a,b,c) });

5 个答案:

答案 0 :(得分:3)

是的,但您可能不应该将它们都命名为f,否则会让您感到困惑。您调用f()的行是调用参数,而不是函数f(除非您传递的内容)

要传递参数,请传递promptForProceed(myFunction, a, b, c),然后使用myFunction(a, b, c)

进行调用

答案 1 :(得分:2)

当然可以。功能是对象!

答案 2 :(得分:2)

是。函数是JavaScript中的第一类对象,可以作为参数传递。

实际上,你的语法是正确的。它应该已经工作了:))

答案 3 :(得分:1)

是的,你可以。你有什么应该工作。传入参数也很好。

您还应该查看函数的调用方法,该方法允许您设置范围

myFunction.call(object);

apply方法允许您以数组形式传递参数。

myFunction.apply([param1, param2]);

此外,你应该理解'闭包'以及在传递函数时范围如何工作。 http://en.wikipedia.org/wiki/Closure_(computer_science)#JavaScript

答案 4 :(得分:0)

promptForProceed(f, f_parameter)

然后将f_parameter传递给f()