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

183
Views
Operador unario + en JavaScript aplicado a ' ' (cadena con espacio)

Estoy confundido por el siguiente código:

 Boolean(' '); // true Boolean(''); // false +' '; // 0 +''; // 0

Mis suposiciones:

  1. Dado que Boolean(' ') se evalúa como true , ' ' es un valor verdadero.
  2. Dado que Boolean('') se evalúa como false , '' es un valor falso.
  3. Dado que el operador unario + intenta convertir su operando en un número, debe convertir un valor falso en 0 y un valor verdadero en 1.

Pregunta: ¿Por qué el operador unario + convierte un valor real (es decir ' ' ) en 0?

Siéntase libre de señalar todo lo que está mal en mis suposiciones y cualquier cosa que me esté perdiendo. ¡Muchas gracias!

=================

EDITAR DESPUÉS DE LAS TRES RESPUESTAS INICIALES

Gracias chicos, sois geniales, y tenéis razón! Esto es lo que encontré en las especificaciones de ES6:

"La conversión de una cadena a un valor numérico (...:) Este valor se determina en dos pasos: primero, se deriva un valor matemático (MV) del literal numérico de cadena; segundo, este valor matemático se redondea como se describe a continuación El MV en cualquier símbolo gramatical, que no se proporciona a continuación, es el MV para ese símbolo definido en 11.8.3.1.

El MV de StringNumericLiteral ::: [vacío] es 0.

El MV de StringNumericLiteral ::: StrWhiteSpace es 0.

El MV de StringNumericLiteral ::: StrWhiteSpaceopt StrNumericLiteral StrWhiteSpaceopt es el MV de StrNumericLiteral, sin importar si el espacio en blanco está presente o no".

(Fuente: https://262.ecma-international.org/6.0/#sec-runtime-semantics-mv-s )

Entonces eso explicaría por qué tanto +'' como +' ' evalúan como 0.

También estaba confundido por qué Boolean() no evaluó ambos a false :

La operación abstracta ToBoolean convierte el argumento en un valor de tipo booleano de acuerdo con la Tabla 10: (...) Cadena: Devuelve falso si el argumento es la Cadena vacía (su longitud es cero); de lo contrario, devuelve verdadero.

Fuente: https://262.ecma-international.org/6.0/#sec-toboolean

Por eso es que Boolean(''); // false y Boolean(' '); // true .

¡Muchas gracias por tu ayuda! :)

about 4 years ago · Juan Pablo Isaza
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!