Arguments object of JavaScript
JavaScript gives you, within a function code, access to the arguments the function was called with:
function sayHi()
{
if (arguments[0] == “bye”)
{
return;
}
alert(arguments[0]);
}
arguments.length delivers the number of arguments:
function howManyArgs()
{
alert(arguments.length);
}
howManyArgs(“string”, 45); //outputs “2”
howManyArgs(); //outputs “0”
howManyArgs(12); //outputs “1”
JavaScript code can be edited with a JavaScript editor. Unlike other programming languages, ECMAScript functions don’t validate the number of arguments passed against the number of arguments defined by the function; any developer-defined function accepts any number of arguments (up to 255, according to Netscape’s documentation) without causing an error. Any missing arguments are passed in as undefined; any excess arguments are ignored. By using the arguments object to determine the number of arguments passed into the function, it is possible to simulate the overloading of functions:
function doAdd()
{
if(arguments.length == 1)
{
alert(arguments[0] + 10);
}
else if (arguments.length == 2)
{
alert(arguments[0] + arguments[1]);
}
}
doAdd(10); //outputs “20”
doAdd(30, 20); //outputs “50”
The function doAdd() adds 10 to a number only if there is one argument; if there are two arguments, they are simply added together and returned. So doAdd(10) outputs “20” whereas doAdd(30,20) outputs “50”. It’s not quite as good as overloading, but it is a sufficient workaround for this ECMAScript limitation.