Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Ordem dos parâmetros na função!

function mudarCorDoTime(cor, nome) {
    setTimes(times.map(time => {
        if(time.nome=== nome) {
            time.corSecundaria = cor;
        }
        return time;
    }));
}

por que a ordem dos paramentros faz diferença nessa caso ?! eu tinha invertido o cor, pelo nome... function mudarCorDoTime**(nome, cor)** {

e a cor nao mudava,mas nao acusava erro. Eu fui analisar pelo console.log e vi que estava fazendo diferenca na order.. somente quando eu troquei a ordem a cor passou a ser mudada. Por que isso acontece?Por conta do indice ou algo assim??

2 respostas
solução!

Ola Thales, tudo bem ?

Sim, isso acontece porque, em JavaScript, os argumentos são passados para a função na ordem em que são definidos nos parâmetros. Não é uma questão de índice como em arrays, mas sim da posição dos argumentos na chamada da função.

Quando você define a função como:

function mudarCorDoTime(cor, nome) { ... } E chama assim:

mudarCorDoTime("azul", "Time A"); O primeiro valor "azul" será atribuído a cor, e "Time A" será atribuído a nome, funcionando corretamente.

Se você inverter os parâmetros na definição:

function mudarCorDoTime(nome, cor) { ... } E chamar do mesmo jeito:

mudarCorDoTime("azul", "Time A"); Agora "azul" será atribuído a nome e "Time A" a cor, o que faz com que time.nome === nome nunca encontre uma correspondência, pois ele estaria comparando algo como "Time A" === "azul", que é sempre false.

Isso não gera erro porque JavaScript não verifica tipos de dados nos parâmetros de funções por padrão, mas a lógica fica errada. O correto é garantir que a ordem dos argumentos na chamada da função corresponda à ordem definida nos parâmetros da função.

Obrigado Paulo ! Agora eu entendi. Não sabia disso !