Boa noite, tudo bem?
Seu erro está na sintaxe. Tem um ';' (ponto e vírgula) na frente do 'else if(raio < 20)'
if(raio > 30) {
fatorCrescimento = -1;
} else if (raio < 20); {
fatorCrescimento = 1;
}
Correção:
<meta charset="utf-8">
<canvas width="800" height="600"></canvas>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
var raio = 19;
var fatorCrescimento = 1;
function desenhaCirculo(x, y, raio) {
pincel.fillStyle = 'blue';
pincel.beginPath();
pincel.arc(x, y, raio, 0, 2 * Math.PI);
pincel.fill();
}
function limpaTela() {
pincel.clearRect(0, 0, 800, 600);
}
function pulsar() {
limpaTela();
if (raio >= 30) {
fatorCrescimento = -1;
} else if (raio <= 20){
fatorCrescimento = 1;
}
raio += fatorCrescimento;
desenhaCirculo(400, 300, raio);
}
setInterval(pulsar, 20);
</script>