no main criamos o array livros e deichamos ele vazio
let livros = [];
dentro da função getBuscarLivrosDaApi foi que atribuimos o a variável res com a requisição dos livros para ele. então quando no metodoFilter, que é outro arquivos de js, declaramos que a variável livrosFiltrados é igual a livro porqueo js ja sabe que queremos usar o array ja preenchido e não vazio? é porque importamos o script no html depois do main?
let livrosFiltrados = livros.filter(livro => livro.categoria == 'front-end')