1
resposta

Função com parametro variavel

Como posso definir o o segundo paramentro "&& bonus2" como opcional ?

Quero que o if rode das maneiras: (bonus1 && bonus2 == true) ou (bonus1 == true)

function offersFixed(bonus1, bonus2, textValue ){ if (bonus1 && bonus2 == true ){

    var valide = document.getElementById("valideorNot");
    valide.setAttribute("class", "invalidPass")
    valide.textContent = "Oferta Inválida";

    var textId = document.getElementById("validateResult");
    var createText = document.createElement("h3");
    createText.textContent = textValue;
    textId.appendChild(createText);


}

}

1 resposta

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.