Gostaria de saber se há algo de errado com meu código que não estou vendo, se é algum tipo de bug, ou alguma atualização recente, pois meu código tanto no chrome quanto no firefox dá a mensagem de erro "Uncaught SyntaxError: Identifier 'listaDeTeclas' has already been declared (at main.js:1:1)", tanto para 'listaDeTeclas' quanto 'contador'. Ao substituir o escopo de ambas variáveis para global (var), ao invés de 'let' ou 'const', o código funciona perfeitamente.
function tocaSom(idElementoAudio){
document.querySelector(idElementoAudio).play();
}
const listaDeTeclas = document.querySelectorAll('.tecla');
let contador = 0;
while(contador < listaDeTeclas.length){
const tecla = listaDeTeclas[contador];
const instrumento = tecla.classList[1];
const idAudio = `#som_${instrumento}`;
tecla.onclick = function () {
tocaSom(idAudio);
}
console.log(idAudio);
contador++;
}
Alguma sugestão ou explicação?