Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] ERRO - no addEventListener

Estou confuso, quando utilizei esse código:


const cep = document.getElementById(cep)

async function buscaEndereco(cep) {
    try {
        var consultaCEP = await fetch(https://viacep.com.br/ws/${cep}/json/)
        var consultaCEPConvertida = await consultaCEP.json()
        if(consultaCEPConvertida.erro) {
            throw Error("CEP NÃO EXISTE!")
        }        
        console.log(consultaCEPConvertida)
        return consultaCEPConvertida;
    } catch (erro) {
        console.log(erro)
    }
}



cep.addEventListener(focusout, buscaEndereco(cep.value))

obtive esses erros:

TypeError: Failed to fetch
    at buscaEndereco (main.js:5:33)
    at main.js:19:34 
    
    main.js:5     GET https://viacep.com.br/ws//json/ net::ERR_FAILED 400 (Bad Request)
    
    index.html:1 Access to fetch at https://viacep.com.br/ws//json/ from origin http://127.0.0.1:5500 has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource. If an opaque response serves your needs, set the requests mode to no-cors to fetch the resource with CORS disabled.

Pórem, quando eu usei cep.addEventListener("focusout", () => buscaEndereco(cep.value)) - deu certo, me explica a diferença?

1 resposta
solução!

Oii, Lucas! Tudo bem?

Agradeço por compartilhar sua dúvida aqui no fórum para podermos te ajudar!

Lucas, a diferença está na forma em que a função buscaEndereco(cep.value))é chamada.

No primeiro exemplo que você postou, cep.addEventListener(focusout, buscaEndereco(cep.value)), é passado o resultado da função buscaEndereco(cep.value) diretamente como argumento para o addEventListener. Sendo assim, a função é executada assim que o código for interpretado, antes do evento focusoutacontecer.

E no segundo exemplo, cep.addEventListener("focusout", () => buscaEndereco(cep.value)), é passado uma função anônima para o addEventListener. E dentro da função anônima é chamado buscaEndereco(cep.value) , o que faz essa função ser executada somente quando o evento focusoutocorrer.

Resumindo, no primeiro exemplo a função é executada imediatamente, enquanto no segundo exemplo a função é executada apenas quando o evento ocorrer.

Espero ter ajudado.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!