0

我想写一个常见的确认方法,比如

var confirmDelete = function (fun) {
    if (confirm("Do you want to delete " + arguments[1])) {
        $(arguments[2]).remove();
        fun(arguments[3]);
    }
    return false;
}

它适用fun于一个参数,但我想适合两个或多个参数,我该怎么做?

4

3 回答 3

0

在 JavaScript 中,您可以传递任意数量的参数。

如果你不通过它们,它们将是未定义的。

所以......你可以这样做:

var confirmDelete = function(arg1, arg2, arg3) {
    if (typeof arg2 === 'undefined') {
        arg2 = "default value for arg2";
    }
    if (typeof arg3 === 'undefined') {
        arg3 = "default value for arg3";
    }
    // do more stuff...
}

您还可以在此处arguments阅读有关神奇变量的信息。

于 2013-06-12T03:17:33.950 回答
0

你可以重写你的函数,比如

var confirmDelete = function fun(arg1, arg2) {
  // number of parameter as your need
  // TODO some stuff
  fun(arg1 -1, arg2 +3); // call it recursively 
  return false; 
}
于 2013-06-12T03:20:12.157 回答
0

每个 javascript Function 对象都有一个名为apply. apply将使用给定的上下文和给定的参数调用您的函数。

var confirmDelete=function(fun) {
    if(confirm("Do you want to delete "+ arguments[1])) {
        // remove the first two elements in arguments, and use the resulting array as a new set of
        // arguments to fun
        fun.apply(this, Array.slice(arguments, 2));
    }
}
于 2013-06-12T03:13:32.170 回答