Best way to prevent/handle divide by 0 in javascript

What is the best way to prevent divide by 0 in javascript that is accepting user inputs. If there is no particular way to achieve this what would be the best way to handle such a situation so as to not prevent other scripts from executing?

Any insights are much appreciated.


There is no way to do that with the normal / and /= operators.

The best way to do what you want is with guards:

function notZero(n) {
  n = +n;  // Coerce to number.
  if (!n) {  // Matches +0, -0, NaN
    throw new Error('Invalid dividend ' + n);
  }
  return n;
}

and then do division like

numerator / notZero(denominator)

Alternatively you can always guard the output

function dividend(numerator, denominator) {
  var quotient = numerator / denominator;
  if (quotient !== quotient) { throw new Error(numerator + " / " + denominator); }
  return quotient;
}

but that loses the readability and expressiveness of /=.


Off the top of my head you could:

  1. Check the user input to see if the denominator is zero (or evaluates to zero, depending on what your script actually does).
  2. Check if the result of the action isFinite() and if not then handle appropriately.

what would be the best way to handle such a situation so as to not prevent other scripts from executing

Division by zero doesn't seem to prevent other scripts from execution in JavaScript:

var a = 20;
var b = 0;
var result = a/b;
console.log(result); // returns Infinity

If you want something different to happen in case of division by zero, you could use

function divideIfNotZero(numerator, denominator) {
  if (denominator === 0 || isNaN(denominator)) {
        return null;
  }
  else {
        return numerator / denominator;
  }
}

Hope this is useful

(denominator != 0 ? numerator/denominator : Infinity)

or whatever value you want to put at the end.

Greetings.