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

190
Vistas
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
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