我正在尝试定义一个函数,该函数应调用作为主函数参数传递的(另一个)函数。
function showMessage(title, text, button, callback) {
console.log(title, text, button);
if (typeof (callback) != "function") {
function callback() {};
alert("converted callback");
}
$("div").click( function() {
callback();
});
}
function myfunction() {
alert("function!");
}
showMessage("title", "text", "button", myfunction() );
演示:http://jsfiddle.net/XvE8D/1/
问题是当 showMessage()
函数被调用时,myfunction()
被立即调用。
我该如何解决这个问题?
最佳答案
如您所见,带括号的 myfunction()
调用 myfunction
。
尝试不带括号将 myfunction
传递给 showMessage
:
showMessage("title", "text", "button", myfunction);
此外,在 showMessage
中,您必须更改此部分:
if (typeof (callback) != "function") {
function callback() {};
alert("converted callback");
}
对此:
if (typeof (callback) != "function") {
callback = function() {};
alert("converted callback");
}
要将附加参数传递给 myfunction
,您可以将 myfunction
包装在另一个函数中并将其传递给 showMessage
。这样的事情应该有效:
showMessage("title", "text", "button", function() { myfunction('foo'); });
关于javascript - 以函数为参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19840876/