Eu estava tentando criar uma pagina que gera codigos hex aleatorios para o background da pagina, eu tentei utilizar uma função recursiva para criar esse codigo hex mas estou tendo alguns problemas, se eu tento retornar o codigo ao final da recursão a função me retorna um undefined, porém o console.log mostra a string certinha, só funciona o codigo quando eu coloco que hexcolor=hexcode e apago o hexcolor = no começo do EventListener . Alguém saberia me dizer porque a função retorna undefined?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>
Color Flipper || Simple
</title>
<!-- styles -->
<link rel="stylesheet" href="css/styles.css" />
</head>
<body>
<nav>
<div class="nav-center">
<h4>color flipper</h4>
<ul class="nav-links">
<li><a href="index.html">simple</a></li>
<li><a href="hex.html">hex</a></li>
</ul>
</div>
</nav>
<main>
<div class="container">
<h2>background color : <span class="color">#f1f5f8</span></h2>
<button class="btn btn-hero" id="btn">click me</button>
</div>
</main>
<!-- javascript -->
<script src="js/hex.js"></script>
</body>
</html>
const hex = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"];
const btn = document.querySelector('#btn');
const color = document.querySelector('.color');
var contador = 0;
let hexcolor = '';
btn.addEventListener('click', function(event){
hexcolor = randomCaracters('#');
console.log(hexcolor);
color.textContent = hexcolor;
document.body.style.backgroundColor = hexcolor;
hexcolor='';
contador = 0;
});
function randomCaracters(hexcode){
if(contador > 5){
//hexcolor=hexcode;
console.log(hexcode);
console.log(contador);
return hexcode;
} else {
contador++;
console.log(hexcode);
randomCaracters(hexcode + hex[Math.floor(Math.random() * hex.length)]);
}
}