Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

208
Vistas
isEven funciona de manera extraña

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.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

!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.

about 4 years ago · Juan Pablo Isaza Denunciar

0

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:

  • m será 0
  • n será un número verdadero (porque cualquier cosa dividida por 2 es otro número distinto de cero, excepto 0)
  • !n será falso (porque ese es el inverso booleano de 0, un valor falso)
  • la declaración de retorno es 0 <= falso; falso se convierte en un número cuando se compara con <=, y 0 <= 0 es verdadero

Si el argumento es impar y positivo:

  • m será 1
  • n será verdadero (porque cualquier número impar dividido por 2 es otro número distinto de cero, y un número distinto de cero es verdadero)
  • !n será falso (porque es el inverso booleano de un valor verdadero)
  • la declaración de retorno es 1 <= falso; falso se convierte en un número cuando se compara con <=, y 1 <= 0 es falso

Si el argumento es par y 0:

  • m será 0
  • n será 0
  • !n será verdadero (booleano inverso de 0)
  • la declaración de retorno es 0 <= verdadero; verdadero se convierte en un número cuando se compara con <=, y 0 <= 1 es verdadero

Pero el código no funciona cuando el argumento es impar y negativo, porque un número impar negativo % 2 da -1, no 1.

  • m será -1
  • n será verdadero (porque cualquier número impar dividido por 2 es otro número distinto de cero, y un número distinto de cero es verdadero)
  • !n será falso (porque es el inverso booleano de un valor verdadero)
  • la declaración de retorno es -1 <= falso; falso se convierte en un número cuando se compara con <=, y -1 <= 0 es verdadero, cuando debería ser falso
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda