Zuweisen oder vergleichen?
Das Gleichheitszeichen hat in JavaScript zwei verschiedene Aufgaben, je nachdem, wie viele du davon schreibst:
=weist zu: Es speichert den Wert rechts in der Variablen links.punkte = 10bedeutet „punkteist jetzt 10“.===vergleicht: Es fragt, ob zwei Werte gleich sind, und ändert nichts.punkte === 10bedeutet „Istpunktegleich 10?“
= statt === in einer Bedingung zu schreiben ist einer der häufigsten Fehler, und JavaScript warnt dich nicht davor:
let alter = 15;
if (alter = 18) {
console.log("Alles Gute zum 18. Geburtstag!");
}
console.log("Alter:", alter);Das gibt Folgendes aus:
Alles Gute zum 18. Geburtstag!
Alter: 18Die Bedingung alter = 18 stellt keine Frage. Sie ändert alter auf 18, und das if verwendet dann diese 18 als Bedingung. Eine Zahl ungleich 0 zählt als wahr, also wird der Block ausgeführt. Das sind zwei Fehler auf einmal: eine falsche Meldung und eine Variable, die ihren Wert verloren hat.
Wäre alter eine Konstante (const alter = 15;), bekämst du wenigstens einen Fehler, weil sich eine Konstante nicht ändern lässt: TypeError: Assignment to constant variable. Das ist ein weiterer Grund, const für Werte zu verwenden, die sich nicht ändern.
JavaScript hat auch == mit zwei Gleichheitszeichen. Vor dem Vergleich wandelt es beide Werte in denselben Typ um, deshalb ist "5" == 5 wahr, obwohl das eine Text und das andere eine Zahl ist. Mit drei Gleichheitszeichen ist "5" === 5 falsch: Text und eine Zahl sind nie gleich. Solche Umwandlungen führen zu Überraschungen, verwende also immer === und !==, nie == und !=.
So schreibst du es:
Anweisungen
- 1
Führe das Programm aus. Der Schüler hat 40 Punkte, trotzdem gibt es
Volle Punktzahl!undPunkte: 100aus. Korrigiere die Bedingung, sodass siepunktemit===mit100vergleicht. Dann gibt das Programm nurPunkte: 40aus. - 2
Füge einen
else-Zweig hinzu, derÜbe weiterausgibt.