Hola, excelente observación, en JavaScript, si haces una división donde el divisor es cero, el resultado no lanza un error como en otros lenguajes, sino que devuelve:
número / 0 //Infinity
0 / 0 //NaN (que significa "Not a Number")
Esto lo hace así porque JavaScript está basado en el estándar IEEE 754, el cual prefiere devolver valores especiales (Infinity, NaN) en vez de romper el programa con un error.
Esto permite que el resto del código siga funcionando, aunque haya ocurrido algo matemáticamente incorrecto.
Ejemplo:
console.log(10 / 0); // Infinity
console.log(0 / 0); // NaN
Entonces, si en el ejercicio el usuario ingresa 0 como cantidad de números, el cálculo del promedio haría algo como:
let promedio = suma / 0; // suponiendo suma = 0
Y eso devolvería NaN, no error, pero eso no tiene sentido para el usuario, por eso es mejor validar ese caso antes de entrar al bucle.
let cantidadNumeros = parseInt(prompt('Ingrese la cantidad de números para el cálculo del promedio:'));
if (cantidadNumeros > 0) {
let suma = 0;
let contador = cantidadNumeros;
while (contador > 0) {
let numero = parseFloat(prompt('Ingrese un número:'));
suma += numero;
contador--;
}
let promedio = suma / cantidadNumeros;
console.log(`El promedio es: ${promedio}`);
} else {
console.log('La cantidad de números debe ser mayor que cero.');
}