Cenário 1

se só existir esta função,

function a()   {       alert("a()");   }

ela pode ser chamada com qualquer número de parâmetros que o resultado é sempre:

  a();
  a('iuy', 455, 54, 54);

uma caixa de dialogo com a string a(), Não dando qualquer erro de invocação.

Cenário 2

Agora se tivermos, só a seguinte função,

function a(id)   {       alert("a(" + id + ")");   }

Quando for chamado o código,
a();
a(’iuy’, 455, 54, 54);

mostra as seguintes caixas de dialogo:

  • a(undefined)
  • a(iuy)

Não dando qualquer erro de invocação.
Cenário 3

Duas funções com o mesmo nome, mas com parâmetros diferentes

function a(id)
  {
      alert("a(" + id + ")");
  }
  function a()
  {
      alert("a()");
  }

Só a última é que fica disponível para invocação.

Conclusão: qualquer função pode ser chamada com qualquer número de parâmetros que não será lançado nenhum erro. Os parâmetros da função não preenchidos no momento da invocação terão o valor “undefined”.