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; }