dib*_*ibs 23 javascript divide-by-zero
什么是在接受用户输入的javascript中防止除以0的最佳方法.如果没有特定的方法来实现这一点,那么处理这种情况的最佳方法是什么,以免阻止其他脚本执行?
任何见解都非常感谢.
Mik*_*uel 20
普通/和/=运营商无法做到这一点.
做你想要的最好的方法就是守卫:
function notZero(n) {
n = +n; // Coerce to number.
if (!n) { // Matches +0, -0, NaN
throw new Error('Invalid dividend ' + n);
}
return n;
}
Run Code Online (Sandbox Code Playgroud)
然后像师一样做
numerator / notZero(denominator)
Run Code Online (Sandbox Code Playgroud)
或者,您可以始终保护输出
function dividend(numerator, denominator) {
var quotient = numerator / denominator;
if (quotient !== quotient) { throw new Error(numerator + " / " + denominator); }
return quotient;
}
Run Code Online (Sandbox Code Playgroud)
但这会失去可读性和表现力/=.
处理这种情况的最佳方法是什么,以免阻止其他脚本执行
除以零似乎不会阻止其他脚本在 JavaScript 中执行:
var a = 20;
var b = 0;
var result = a/b;
console.log(result); // returns Infinity
Run Code Online (Sandbox Code Playgroud)
如果您希望在除以零的情况下发生不同的事情,您可以使用
function divideIfNotZero(numerator, denominator) {
if (denominator === 0 || isNaN(denominator)) {
return null;
}
else {
return numerator / denominator;
}
}
Run Code Online (Sandbox Code Playgroud)
希望这有用
(denominator != 0 ? numerator/denominator : Infinity)
Run Code Online (Sandbox Code Playgroud)
或者您想在最后添加的任何值。
问候。
| 归档时间: |
|
| 查看次数: |
36549 次 |
| 最近记录: |