1
resposta

Dúvida na função

Olá, estou com uma dúvida na função abaixo. Não entendi a seguinte parte do "if" "colaborador.favorito = !colaborador.favorito". O sinal de "=" depois de colaborador.favorito indica o que? Normalmente o if não tem a sintaxe? if(condicao) {entao} e o ternario: condicao ? "faça isso" : "faça aquilo".

function resolverFavorito(id) { setColaboradores(colaboradores.map(colaborador => { if(colaborador.id === id) colaborador.favorito = !colaborador.favorito; return colaborador; }))}

1 resposta

Olá, Denis!

Na função que você compartilhou, a linha "colaborador.favorito = !colaborador.favorito" está invertendo o valor da propriedade "favorito" do objeto "colaborador".

O sinal de "=" é o operador de atribuição, que é usado para atribuir um valor a uma variável. Nesse caso, ele está sendo usado para atribuir o valor contrário ao valor atual da propriedade "favorito".

Quando a função "resolverFavorito" é chamada com um determinado "id", ela percorre a lista de colaboradores e verifica se o "id" do colaborador atual é igual ao "id" passado como parâmetro. Se for igual, o valor da propriedade "favorito" do colaborador é invertido.

Essa técnica é muito comum em linguagens de programação e é conhecida como "toggle". Ela permite alternar o valor de uma variável booleana entre verdadeiro e falso.

Quanto à sua pergunta sobre a sintaxe do "if", você está correto. A sintaxe do "if" é geralmente "if(condicao) {entao}". No entanto, nesse caso, a atribuição do valor contrário à propriedade "favorito" está sendo feita dentro do bloco do "if". Isso é possível porque a atribuição de valor também é uma expressão em JavaScript e pode ser usada em qualquer lugar onde uma expressão é esperada.

Espero ter esclarecido sua dúvida! Se tiver mais alguma pergunta, é só me dizer.

Espero ter ajudado e bons estudos!