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

132
Views
¿Igualdad estricta o laxa cuando se compara con un símbolo?

¿Se requiere alguna vez igualdad estricta ( === ) al comparar cualquier entidad con un símbolo? Ninguna de las reglas de conversión de tipos en MDN indica ninguna conversión a/desde un Símbolo y una lectura de ellas indica que siempre debería estar bien (¿aparte de quizás estropear la uniformidad del código?) para usar == cuando una de las entidades es un Símbolo.

Entonces, ¿puede algo como

 function foo(x) { return x == somePredefinedSymbol; }

alguna vez salió mal, porque, según tengo entendido, la igualdad anterior solo puede devolver verdadero si x es somePredefinedSymbol ?

PD: Esto es solo por curiosidad técnica. No pretendo recomendar el uso de == .

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Entonces, ¿puede algo como

 function foo(x) { return x == somePredefinedSymbol; }

alguna vez sale mal,

Sí, este es un ejemplo algo construido, pero muestra un escenario de falla:

 const predefinedSymbol = Symbol("foo"); const someObject = { value: "bar", // some unrelated values [Symbol.toPrimitive]() { // override primitive conversion return predefinedSymbol; } } console.log(someObject == predefinedSymbol); //true console.log(someObject === predefinedSymbol); //false

A partir de ES6, la igualdad flexible tendrá en cuenta los símbolos en comparación con un objeto. De la especificación ECMAScript 6, 7.2.12 Comparación de igualdad abstracta :

  1. Si Tipo(x) es Cadena, Número o Símbolo y Tipo(y) es Objeto, entonces
    devuelve el resultado de la comparación x == ToPrimitive(y).
  2. Si Tipo(x) es Objeto y Tipo(y) es Cadena, Número o Símbolo, entonces
    devuelve el resultado de la comparación ToPrimitive(x) == y.

Por lo tanto, si un objeto convertido en un primitivo produce un símbolo y ese es el mismo símbolo con el que se compara, entonces la igualdad laxa producirá true pero usando igualdad estricta el resultado será false .

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!