Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

207
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda