Solución:
No hay forma de hacer eso con lo normal. /
y /=
operadores.
La mejor forma de hacer lo que quiere es con los guardias:
function notZero(n) {
n = +n; // Coerce to number.
if (!n) { // Matches +0, -0, NaN
throw new Error('Invalid dividend ' + n);
}
return n;
}
y luego hacer división como
numerator / notZero(denominator)
Alternativamente, siempre puede proteger la salida
function dividend(numerator, denominator) {
var quotient = numerator / denominator;
if (quotient !== quotient) { throw new Error(numerator + "https://foroayuda.es/" + denominator); }
return quotient;
}
pero que pierde la legibilidad y expresividad de /=
.
Desde lo alto de mi cabeza podrías:
- Verifique la entrada del usuario para ver si el denominador es cero (o se evalúa como cero, dependiendo de lo que haga realmente su secuencia de comandos).
- Compruebe si el resultado de la acción
isFinite()
y si no, maneje apropiadamente.
¿Cuál sería la mejor manera de manejar tal situación para no evitar que se ejecuten otros scripts?
La división por cero no parece evitar la ejecución de otros scripts en JavaScript:
var a = 20;
var b = 0;
var result = a/b;
console.log(result); // returns Infinity
Si desea que suceda algo diferente en caso de división por cero, puede usar
function divideIfNotZero(numerator, denominator) {
if (denominator === 0 || isNaN(denominator)) {
return null;
}
else {
return numerator / denominator;
}
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)