Esse exercício deu dor de cabeça, não sei se foi algo do live server do chrome pois meu código estava igual e não rodava, ai do nada rodou kkkk.
HTML
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Iniciando animação de bolinha</title>
</head>
<body>
<div>
<canvas id="tela" width="600px" height="400px"></canvas>
<script src="anima.js"></script>
</div>
</body>
</html>
JS
const tela = document.querySelector("#tela");
const pincel = tela.getContext("2d");
pincel.fillStyle="lightgray";
pincel.fillRect(0,0,600,400);
function desenhaCirculo(posX,posY,raio){
if(posX<100){
pincel.fillStyle="red";
}else if(posX>100 && posX<200){
pincel.fillStyle="magenta";
}else if(posX>200 && posX<300){
pincel.fillStyle="orange";
}else if(posX>300 && posX<400){
pincel.fillStyle="yellow";
}else if(posX>400 && posX<500){
pincel.fillStyle="lightgreen";
}else{
pincel.fillStyle="white";
}
pincel.beginPath();
pincel.arc(posX,posY,raio,0,2*Math.PI);
pincel.fill();
}
function limparTela(){
pincel.clearRect(0,0,600,400);
pincel.fillStyle="lightgray";
pincel.fillRect(0,0,600,400);
}
let posX = 0;
let sentido = 10;
function updateTela(){
limparTela();
if(posX>590)
{
sentido = -10;
}else if(posX < 10){
sentido = 10;
}
desenhaCirculo(posX,20,10);
posX = posX + sentido;
}
setInterval(updateTela,24);