Por padrão todos os parâmetro já são opcionais. O que você pode fazer é checar quais não foram informados utilizando: if (typeof parametro == undefined)
Imagine uma função com esse cabeçalho:
calcularArea(altura, largura, proporcao);
Qualquer uma das seguintes chamadas vão funcionar:
calcularArea(altura, largura, proporcao);
calcularArea(altura, largura);
calcularArea(altura);
calcularArea();
Porém, se você não se resguardar, a função terá problemas ao calcular a área porque ela estará utilizando todos os parâmetros, ou pelo menos dois deles.
Faça o teste com o seguinte código:
function calculo(altura, largura)
{
if (typeof largura === "undefined" && typeof altura === "undefined") return "sem altura e largura";
if (typeof largura === "undefined") return "sem largura";
return "os dois parâmetros foram informados";
}
console.log(calculo());
console.log(calculo(1));
console.log(calculo(1, 2));
Abra o console do navegador enquanto lê esse comentário, copie e cole esse código nele e dê ENTER. Você vai perceber que a função calculo() vai rodar perfeitamente nos três casos.
Se você quiser que o parâmetro Bonus2 seja opcional, você terá que alterar a ordem dos parâmetros e colocá-lo no final.