compliquei bem mais minha resposta kk mas cheguei lá! isso é o que importa, com o tempo acho (espero!!) que a lógica vá ficando mais simples na cabeça
<canvas width="600" height="400"></canvas>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
pincel.fillStyle = 'lightgray';
pincel.fillRect(0, 0, 600, 400);
function desenhaCirculo(x, y, raio){
pincel.fillStyle = 'navy';
pincel.beginPath();
pincel.arc(x, y, raio, 0,2* Math.PI);
pincel.fill();
}
function limpaTela(){
pincel.clearRect(0, 0, 600, 400);
}
function mensagemConsole(){
console.log('Chamei função');
}
var x= 20;
var vaiDaEsquerdaParaAdireita = true;
function atualizaTela(){
if (x < 600 && vaiDaEsquerdaParaAdireita == true){
limpaTela();
desenhaCirculo(x, 220, 10);
x++;
}
if (x == 580) {
vaiDaEsquerdaParaAdireita = false;
x--;
}
if (x < 580 && vaiDaEsquerdaParaAdireita == false){
limpaTela();
desenhaCirculo(x, 220, 10);
x--;
}
if (x == 20){
vaiDaEsquerdaParaAdireita = true;
x++;
}
}
setInterval(atualizaTela, 10);
</script>