Maison > interface Web > js tutoriel > L'opérateur `==` de JavaScript peut-il créer de véritables évaluations avec des conditions contradictoires ?

L'opérateur `==` de JavaScript peut-il créer de véritables évaluations avec des conditions contradictoires ?

Patricia Arquette
Libérer: 2024-11-01 11:28:02
original
550 Les gens l'ont consulté

Can JavaScript's `==` Operator Create True Evaluations with Contradictory Conditions?

Les intersections logiques peuvent-elles être évaluées comme étant vraies dans des conditions conflictuelles ?

Dans une question d'entretien intrigante posée par une entreprise technologique renommée, la question se pose : l'expression (a == 1 && a == 2 && a == 3) peut-elle jamais être évaluée comme vraie en JavaScript ?

Au départ, cela peut sembler invraisemblable étant donné la nature apparemment contradictoire des conditions. Cependant, en approfondissant les subtilités de l'opérateur d'égalité de JavaScript (==), une voie émerge pour répondre à cette énigme.

L'opérateur d'égalité de JavaScript, contrairement à son homologue strictement égal (===), effectue automatiquement une coercition de type. convertir des valeurs en un type commun à des fins de comparaison. Cela ouvre la porte à la manipulation d'objets, notamment avec des fonctions toString (ou valueOf) personnalisées, qui permettent de générer des valeurs dynamiques.

Considérons l'exemple suivant :

const a = {
  i: 1,
  toString: function () {
    return a.i++;
  }
}
Copier après la connexion

Avec cette personnalisation toString, chaque fois que a est implicitement contraint à une chaîne (par exemple, pour la journalisation), la valeur i interne de a s'incrémente. Cela fournit un mécanisme pour satisfaire les trois conditions d'égalité :

a == 1 // true (initially i = 1)
a == 2 // true (after toString call, i = 2)
a == 3 // true (after second toString call, i = 3)
Copier après la connexion

Ainsi, en tirant parti du comportement dynamique des objets et de la conversion de type implicite de ==, il devient possible pour l'expression (a == 1 && a == 2 && a == 3) pour évaluer true en JavaScript.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal