function checkargs() {
// arguments.caller.callee is the Function object that called us.
// Its arity property is the number of arguments that were expected.
var expected = arguments.caller.callee.arity;
// arguments.caller is the arguments object of the function that
// called us. Its length property is the number of actual args passed.
var passed = arguments.caller.length;
// If they don't match, do some fancy regular expression work to get
// the name of the calling function, and display a warning.
if (passed != expected) {
var funcname = arguments.caller.callee.toString().match(/function (\w*)/)[1];
alert("WARNING:\n" +
funcname + "() " + "was invoked with wrong number of arguments!\n" +
"Expected " + expected + " arguments, but passed " + passed);
}
}
// Here is a test function that uses checkargs().
function f(x,y,z) { checkargs(); return x+y+z; }
f(1,2,3); // Passed the right number of arguments
f(1,2); // Passed too few arguments; checkargs() displays a warning.