Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

472
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!