回调函数-javascript

回调函数-javascript,javascript,jquery,Javascript,Jquery,我有通用的功能,我需要在不同的地方使用。问题是有些地方我需要传递没有参数的函数,有些地方需要参数来回调函数。我如何处理这两种情况 function deletePrompt(message, callback){ $("#deleteModelWindow").modal({ containerCss: { width: 320, height: 180, overflow: 'hidden'}, onSho

我有通用的功能,我需要在不同的地方使用。问题是有些地方我需要传递没有参数的函数,有些地方需要参数来回调函数。我如何处理这两种情况

    function deletePrompt(message, callback){
    $("#deleteModelWindow").modal({
    containerCss: {
        width: 320,
        height: 180,
        overflow: 'hidden'},
        onShow: function(dialog){ dialog.wrap.css('overflow','hidden'); }
    });
    document.getElementById("spanid").innerHTML = message;       
    $("#deleteModelWindow").on('click', "#deleteConfirm", function(){
    if (callback !== undefined) {
        callback();           
    } else {    
        callback(parameter1,parameter2);        
    }
    $.modal.close();
    });     
    $("#deleteModelWindow").on('click', "#cancel", function(){          
    $.modal.close();
    });   
}

致电:

<input id="deleteInvitationBtn" class="buOrange large" type="button" name="submit" value="Delete Invitation" onClick="deletePrompt('Are you sure you want to delete the invitation?', deleteInvitation('${invitation.invitationId}','${invitation.clientActivationCode}'))">

在这里,在onclick中,在重定向到deletePrompt()之前,它直接重定向到DeleteInvestment()


有人能解释为什么会发生这种情况吗?

没关系。JavaScript函数非常灵活,您可以向它们传递比预期更多或更少的参数;在函数中,任何未传递的已声明参数都将具有值
未定义
。您传递的任何未声明的参数都将作为
参数
伪数组的一部分提供

例如:

功能测试(标签a、b){
var n;
log(“----”+标签);
snippet.log(“a=“+a”);
snippet.log(“c=“+b”);
如果(arguments.length>3){
log(“额外参数:”);
对于(n=3;n

您可以使用object或检查
消息
回调
是否未定义:

function deletePrompt(message, callback) {
        $("#deleteModelWindow").modal({
        containerCss: {
            width: 320,
            height: 180,
            overflow: 'hidden'},
            onShow: function(dialog){ dialog.wrap.css('overflow','hidden'); }
        });

        if (message !== undefined) {
             document.getElementById("spanid").innerHTML = message;
        }

        if (callback !== undefined) {
            $("#deleteModelWindow").on('click', "#deleteConfirm", function() {           
              callback();
              callback(parameter1,parameter2);

              $.modal.close();
            }); 
        }

        $("#deleteModelWindow").on('click', "#cancel", function(){          
        $.modal.close();
        });   
}
JSFiddle演示了这个概念:


最好将绑定逻辑拆分为更小的函数,使函数更干净。

您可以在回调函数中使用“arguments”对象来处理它,对吗?您可以在下面看到我如何调用该函数。onclick=“deletePrompt(‘确实要删除用户吗?’,deleteUser)”>onclick=“deletePrompt(‘确实要删除邀请吗?’,deleteInvitation,deleteInvitation(‘${invitation.invitationId}’,‘${invitation.clientActivationCode}’)抱歉,无法工作。我正在使用如下。对我来说,回调返回false$(“#deleteModelWindow”)。在('click',“#deleteConfirm”,函数(){if(callback!==undefined){callback(parameter1,parameter2);}else{callback();}$.modal.close()});onclick only它正在调用deleteInvestment方法。