It seems that the best way to handle arguments in javascript functions is to require the caller to pass an associative array:
example = function(options) {
alert('option1: ' + options.a + ', option2: ' + options.b);
}
The arguments are now called and not needed in any particular order when calling this function:
example({'b':'hello option2', 'a':'hello option1'});
The only thing I donβt like is that I need all this additional code to deal with the required and default arguments, not to mention the absence of additional arguments, so that the caller knows that they called the function incorrectly:
example = function(options) {
var required_args = ['a', 'd'];
var default_args = {'b':'option2', 'c':'option3'};
var allowed_args = ['a', 'b', 'c', 'd'];
for (var arg in default_args) {
if (typeof options[arg] == "undefined")
options[arg] = default_args[arg];
}
alert('option1: ' + options.a + ', option2: ' + options.b);
}
Is there a standard way to handle this? I think I can create a function like:
deal_with_args(options, required_args, default_args, allowed_args)
And throw some kind of exception if required_args or allowed_args are violated ...