Sie sind hier

JavaScript Prüfungsfrage

Frage

Kann es sein, dass in folgenden einfachen JavaScript Beispielen der angehängte Code ausgeführt wird?

  • Beispiel 1:
    if (a==1 && a===2 && a===gugus) {
    // my code ...
    }
  • Beispiel 2:
    if (b===1 && b===2 && b===gugus) {
    // my code ...
    }

Eine schnelle Antwort könnte sein: unmöglich, da der Wert einer Variablen nicht gleichzeitig verschiedene Werte beinhalten kann ...

Antwort: 2x ja

Eine ausführliche Erklärung ist dem gewieften JavaScript Programmierer überlassen. Für das erste Beispiel sei nur soviel erwähnt: gleich (a==1) und gleichwertig (b===1) ist nicht genau das gleiche ... im ersten Fall wird "etwas" mit der Zahl 1 verglichen. Unter Umständen wird vor dem Vergleich erst noch eine Typekonvertierung vorgenommen (valueOf() Methode), bevor der effektive Vergleich stattfindet. Im zweiten Fall wird tatsächlich "etwas" mit der Zahl 1 verglichen. Es gilt weiter zu beachten, dass die Vergleiche nicht parallel stattfinden!

Beispiel 1:

var a = {};
var gugus = 2;
a.valueOf = function () {
  a = 2;
  return 1;
};
if (a==1 && a===2 && a===gugus) {
  console.log('this is my code ... !');
}

Beispiel 2:

var n = 1;
var gugus= 3;
Object.defineProperty(global, 'b', {
    get: function () { return n++; }
});
if (b===1 && b===2 && b===gugus) {
  console.log('this is my code ... !');
}

  [Off Topic] Einmalige Gelegenheit:

Wohnung
 

4½ - Zimmer Wohnung

In Grindelwald grosszügige und zentral (nähe Schulhaus) gelegene 4½-Zimmer Wohnung zu vermieten. Wohnfläche 170 m² auf 2 Etagen, Diele, neue offene Küche, Terrasse, Balkon, Bad, Dusche, 2 WC’s, Keller, Estrich.

          Mietzins Fr. 1850.-

Nebenkosten Fr 350.- / bei Bedarf Garagenplatz Fr. 100.-

  Mietbeginn Dezember oder nach Vereinbarung.
  Gerne stehen wir für weitere Fragen zur Verfügung (Mobile: 076 3182888)
ASEBO GmbH Advanced System Engineering