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

133
Visualizações
¿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 Respostas
Responde à pergunta

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