„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Kann (a == 1 && a == 2 && a == 3) jemals in JavaScript wahr sein?

Kann (a == 1 && a == 2 && a == 3) jemals in JavaScript wahr sein?

Veröffentlicht am 08.11.2024
Durchsuche:406

Can (a == 1 && a == 2 && a == 3) Ever Be True in JavaScript?

Kann (a== 1 && a ==2 && a==3) in JavaScript jemals wahr sein?

Dieses verwirrende Interview Die Frage stellt das Verständnis des JavaScript-Gleichheitsoperators (==) in Frage. Bei der Frage geht es darum, ob es möglich ist, den Ausdruck (a== 1 && a ==2 && a==3) als wahr auszuwerten.

Auf den ersten Blick scheint es unmöglich, da a nicht gleich drei sein kann unterschiedliche Werte gleichzeitig. Ein cleverer Trick nutzt jedoch die formbare Natur des ==-Operators von JavaScript aus.

In JavaScript führt == eine Typerzwingung durch, die unerwartete Wertevergleiche ermöglicht. Durch Definieren eines Objekts mit einer benutzerdefinierten toString()- oder valueOf()-Funktion kann man den zurückgegebenen Wert manipulieren, wenn man das Objekt mit einer Zahl vergleicht.

Betrachten Sie beispielsweise den folgenden Code:

const a = {
  i: 1,
  toString: function () {
    return a.i  ;
  }
};

if(a == 1 && a == 2 && a == 3) {
  console.log('Hello World!');
}

Hier hat das Objekt a eine Eigenschaft, die i auf 1 initialisiert wurde. Seine toString()-Funktion ist so definiert, dass sie i inkrementiert und seinen Wert zurückgibt, wodurch die Darstellung des Objekts bei jedem Vergleich effektiv geändert wird.

Wenn a zum ersten Mal mit 1 verglichen wird, wird i auf 2 erhöht. Beim zweiten Vergleich wird i erneut auf 3 erhöht, wodurch die Gleichheitsbedingung erfüllt wird. Schließlich wird i im dritten Vergleich auf 4 erhöht, aber durch die Typerzwingung wird es wieder auf 3 konvertiert, was zu einer Übereinstimmung führt ist tatsächlich möglich, den Ausdruck (a== 1 && a ==2 && a==3) zu erfüllen, sodass er als wahr ausgewertet wird.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3