yo tengo esa expresion
if (a === Infinity && b === 0 || a === -Infinity && b === 0 || a === 0 && b === Infinity || a === 0 && b === -Infinity) { return NaN }
Lo quiero corto, pero no tengo idea de cómo hacerlo.
ACTUALIZAR
Si es posible, no puedo usar isFinite()
, ¿cómo acortar más?
Puede usar !isFinite()
para probar si es Infinity
o -Infinity
.
if ((!isFinite(a) && b === 0) || (!isFinite(b) && a === 0)) { return NaN; }
Si a
y b
son de tipo numérico, entonces:
if (!(a*b || isFinite(a+b))) return NaN;
Si su linter advierte sobre el uso de funciones globales, entonces:
if (!(a*b || Number.isFinite(a+b))) return NaN;
Si no puedes usar la multiplicación:
if (!(a && b || Number.isFinite(a+b))) return NaN;
Math.abs
ing ambos y luego verificar que el mínimo es 0 y el máximo es infinito debería hacerlo.
const nums = [a, b].map(Math.abs); if (Math.min(...nums) === 0 && Math.max(...nums) === Infinity) { return NaN; }
También puede ordenar la matriz.
const nums = [a, b] .map(Math.abs) .sort(a, b) => a - b); // .sort() works too, but could be more confusing if (nums[0] === 0 && nums[1] === Infinity)) { return NaN; }