[注意:以下所有代码都使用JavaScript和jQuery + jQuery-UI框架]
我的意思是,通常JS函数参数只是变量。所以我们所能做的就是这样设置:
[0-9]+[a-zA-Z_][a-zA-Z_0-9]*
但它不喜欢我可以使用我设置的所有参数。例如:
function x(parameter1, parameter2, parameter3, etc...) {/* code inside */}
你知道,function flipCard(front, back, effect, option, duration) {
$(front).click(function() {
$(front).hide(effect, option, duration, function(){
$(back).show(effect, option, duration)
});
});
}
是一个非常罕见的参数,我可以使用。但总是使用option
,我确实考虑了这些参数的变化位置。但是,似乎我可以永远这样做,所以我考虑使用参数作为对象。我尝试了许多我能想到的方式:
duration
再试一次:
function t(obj = {x,y,z}) {/* code inside */} //Absolutely fail
你有什么想法来处理这个问题吗?
答案 0 :(得分:2)
我认为这就是你要问的......
在你的活动卡片中你必须检查是否传递了所需的东西,如果没有输出错误。
但是,您的代码不是处理情况的最佳方式......
function flipCard(obj) {
$(obj.front).click(function() {
$(obj.front).hide(obj.effect, obj.option, obj.duration, function(){
$(obj.back).show(obj.effect, obj.option, obj.duration)
});
});
}
//Call flipCard with an object
//obviously set your values as needed
flipCard({
front : undefined,
back : undefined,
effect : undefined,
option : undefined
duration: undefined
});

答案 1 :(得分:1)
您有几个选择:
使用“选项”对象:
var xDefaults = {
effect: "slide",
option: "some default",
duration: "slow"
};
function x(options) {
options = $.extend({}, xDefaults, options);
$(options.front).click(function() {
$(options.front).hide(options.effect, /*... and so on... */);
});
}
用法:
x({front: "#foo", effect: "fade"});
很清楚;使用起来有点笨拙。
检测函数何时调用您拥有的选项:
function x(front, back, effect, option, duration) {
if (/*...figure out that `option` is really `duration`...*/) {
duration = option;
option = null/*...or some default...*/;
}
$(front).click(function() {
$(front).hide(effect, /*... and so on... */);
});
}
弄清楚提供了哪些可选参数可能很尴尬,但这就是jQuery为其大部分功能所做的事情。您可以查看您获得的实际参数的类型,查看magic arguments
伪数组以了解许多您获得的实际参数等等。