Estaba jugando con uno de los ejercicios cuando codifiqué esto:
function isEven(x){ var m = x % 2 var n = x / 2 return m <= !n }La parte divertida es que realmente funciona, pero no entiendo si !n hace que el número sea negativo o afecta el valor booleano en sí. ¿Alguien puede explicar cómo funciona mi código? Gracias.
!n es una pista falsa. Para cualquier valor de x distinto de 0 , !n será false ; será true cuando x == 0 .
m es 0 para números pares, 1 para números impares. Cuando compara un número con un booleano, el booleano se convierte en un número. Entonces m <= false es equivalente a m <= 0 . Esto será cierto cuando m es 0 .
Entonces puedes deshacerte de n y solo usar esto:
function isEven(x){ var m = x % 2; return m <= false } [0, 1, 2, 3, 4, 5, 6, 7, 8].forEach(x => console.log(x, isEven(x))); La razón por la que funciona con !n es porque en el único caso en que !n es true , x == 0 y m == 0 . 0 <= true es verdadero, por lo que la función también devuelve el resultado correcto.
Primero
var n = x / 2 n será falso si x es 0 y verdadero en caso contrario.
Si el argumento es par y no 0:
Si el argumento es impar y positivo:
Si el argumento es par y 0:
Pero el código no funciona cuando el argumento es impar y negativo, porque un número impar negativo % 2 da -1, no 1.