javascript - 以函数为参数的函数

标签 javascript jquery function

我正在尝试定义一个函数,该函数应调用作为主函数参数传递的(另一个)函数。

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/

相关文章:

javascript - 在选项中解析JSON响应值

jquery - 从文本输入字段中删除内容

javascript - TextBox 按键事件不会在 Google map 信息窗口内触发

c++ - 将任意大小的数组传递给 C++ 函数

javascript - 使用 webpack 时如何在调试器中获取 javascript 变量

c# - 将值连接到隐藏变量

javascript 对象 - 检索子类变量

javascript - jQuery .each css 不是函数

javascript - 在函数式编程的 javascript 中,返回回调而不是仅仅调用回调有什么惩罚吗?

c++ - 从成员指针转换为整个结构/类