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

499
Visualizações
¿Por qué test >= 0 es verdadero cuando test es nulo?

Digamos que tengo el siguiente código javascript:

 const test = null if ( test >= 0 ){ console.log("Hello World") }

Este código imprimirá Hello World ... En mi opinión, debería funcionar solo si test === null . Pero todas las veces que uso la test >= 0 , el código cae sobre ella. ¿Hay alguna razón por la que sucede? Lo veo como un problema en algunas situaciones... Por ejemplo, en el siguiente código:

 const test = null if ( test >= 0 ){ console.log("1") } else if ( test === null ){ console.log("Hello World") }

En este caso, el código no está haciendo lo que aparentemente debería estar haciendo. La solución para que funcione sería tener el hábito de poner siempre la condición === null al principio en if/else o switch/cases. ¿Es así como se supone que debo trabajar con Javascript? ¿O hay una mejor manera de hacerlo?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

¿Hay alguna razón por la que sucede?

Cualquier valor que se compare con un número será coaccionado a un número 1 . Number(null) es 0 , y 0 >= 0 es true . Si hubiera usado undefined por otro lado, habría obtenido NaN >= 0 , que es false .

1: De hecho, la única comparación relacional no numérica es entre dos cadenas (o dos objetos que se convierten en cadenas).

La solución para que funcione sería tener la costumbre de poner siempre la condición === null al principio.

Sí, así es como se manejan las variables que pueden tener el valor null .

¿O hay una mejor manera de hacerlo?

Es posible que desee evitar tener el valor null en su variable. Dependiendo de la aplicación, cualquiera que sea el valor que represente, ¿también podría expresarse como 0 o -1 , tal vez? Puede que no sean mucho más limpios, pero al menos tendrían un comportamiento predecible en >= 0 .

about 4 years ago · Juan Pablo Isaza Relatório

0

Pensé que era una pregunta simple pero me equivoqué. Fui a comprobar ECMAScript Language Specification, que especificaba cómo funciona "a>=b".

Resultó que no está haciendo "a>b || a==b", sino que está devolviendo la respuesta opuesta de "a<b". Creo que es por eso que (null>= 0) devuelve verdadero, porque (null <0) devuelve falso.

especificaciones ES3

11.8.4 El operador mayor que o igual ( >= ) La producción RelationalExpression : RelationalExpression >= ShiftExpression se evalúa de la siguiente manera:

  1. Evaluar ExpresiónRelacional.
  2. Llame a GetValue (Resultado (1)).
  3. Evalúe ShiftExpression.
  4. Llame a GetValue (Resultado (3)).
  5. Realice la comparación Result(2) < Result(4) . (ver 11.8.5).**
  6. Si Result(5) es verdadero o indefinido, devuelve falso. De lo contrario, devuelve verdadero.

Y encontré otra referencia que traza los operadores relacionales y de igualdad de algunos casos especiales.

Operadores relacionales y de igualdad

about 4 years ago · Juan Pablo Isaza Relatório

0

si convierte nulo en bool, obtiene 0.

 if ( test >= 0 ){

Aquí se usa un operador más grande o igual para la comparación, por lo que está obteniendo resultados correctos.

Por ejemplo

 Boolean(null); // false

Para obtener más información, consulte https://javascript.info/ifelse#boolean-conversion

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