Help with JS and functions parameters

javascript

Solution

JavaScript doesn't support what you would call in other languages method overloading, but there are multiple workarounds, like using the `arguments` object, to check with how many arguments a function has been invoked:

function f1(a, b, c) {
  if (arguments.length == 2) {
    // f1 called with two arguments
  } else if (arguments.length == 3) {
    // f1 called with three arguments
  }
}

Additionally you could type-check your arguments, for Number and String primitives is safe to use the `typeof` operator:

function f1(a, b, c) {
  if (typeof a == 'number' && typeof b == 'number') {
    // a and b are numbers
  } else if (typeof a == 'string' && typeof b == 'number' &&
             typeof c == 'number') {
    // a is a string, b and c are numbers
  }
}

And there are much more sophisticated techniques like the one in the following article, that takes advantage of some JavaScript language features like closures, function application, etc, to mimic method overloading:

- JavaScript method overloading

Problem

Does JS support two functions with the same name and different parameters ? ``` function f1(a, b) { // a and b are numbers } function f1(a, b, c) { // a is a string //b and c are numbers } ``` Can I use those JS function for IE7, FF, Opera with no problem?

Original source