gpt4 book ai didi

javascript - 允许 javascript 函数接受任意数量的参数

转载 作者:行者123 更新时间:2023-12-03 21:43:16 31 4
gpt4 key购买 nike

我希望下面的函数更加灵活,并且接受对其他函数的多个回调(如果它们在参数中定义)。

$(function() {
function icisDashBox(colorElem, thisWidth, thisHeight, completeCallBack) {
$(colorElem).colorbox({
transition: 'none',
innerWidth: thisWidth,
innerHeight: thisHeight,
opacity: '0.5',
onOpen: function() {

},
onLoad: function() {

},
onComplete:function() {
$('#cboxLoadedContent').wrap('<div id="icis_dialog_msg" />');

completeCallBack();

},
onCleanup: function() {

},
onClosed: function() {
$('#cboxLoadedContent').unwrap();
}
});
}

icisDashBox('.example9', '500', '500', completeFunction);

function completeFunction() {

var fooClass = $("#colorbox").addClass("FOO");

var barClass = $("#colorbox").addClass("BAR");

var ajaxCnt = $.ajax({
type: "GET",
url: "http://www.payso.me.uk",
dataType: "html",
success: function(data) {
$("#colorbox").addClass("AJAX SUCCESS");
}
});

return {
x : fooClass,
y : barClass,
z : ajaxCnt
};
}

因此,在理想的世界中,我的函数将如下所示,无需显式声明任何参数:

function icisDashBox() { function code here }

这可能吗?另外,如果参数未定义,我该如何处理?

例如,如果对函数的一次调用定义了多个回调,而另一个函数只有一个,是否有一种方法可以处理回调不存在的情况。

干杯,

:)

最佳答案

您可以使用关键字arguments这是传递参数的数组,如下所示:

function myFunc() {
if(arguments.length > 0) //be sure to check if there are any...
var arg1 = arguments[0];
}

但是,更好的方法是接受一个对象,例如:

function myFunc(settings) {
settings = settings || {}; //in case it was called as just: myfunc()
var something = settings.something || "default value";
}

你可以这样调用它:

myFunc({ something: "value", somethingElse: "otherValue" });

这种方法允许您接受任意数量的参数,而且还可以有任何可选参数,而无需一堆 myFunc(null, null, null, "value") 类型调用来仅提供您想要的参数,再加上它们的命名,使这个在我看来更易于维护。 Here's an edited version of the plugin to demonstrate this .

关于javascript - 允许 javascript 函数接受任意数量的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3583044/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com