根据下面的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) });
答案 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()