Sei das boas práticas de para facilitar a leitura do código, más gostaria de saber porque o código abaixo não funciona sem eu armazenar o valor de (listaDeTeclas[contador].classList[1]) dentro de uma constante? apenas colocando direto na propriedade da função (tocaSom(aqui)) na concatenação com a outra string.
function tocaSom(idElementoAudio){
document.querySelector(idElementoAudio).play();
}
const listaDeTeclas = document.querySelectorAll('.tecla');
let contador = 0;
while(contador < listaDeTeclas.length){
//const instrumento = listaDeTeclas[contador].classList[1]
listaDeTeclas[contador].onclick = function(){
tocaSom('#som_'+ listaDeTeclas[contador].classList[1])
};
contador = contador+1;
}