Warum if(!b)?

... komplette Frage anzeigen

3 Antworten

Wenn b FALSE ist (also man bei dem Dialog nicht "Ok" gedrückt hat), dann wird die schleife unterbrochen, denn !b ist dann TRUE, was bedeutet, dass der Code nach der "if" Abfrage ausgeführt wird.

if (!b) und if (b == FALSE) bedeuten also das gleiche, "b == FALSE" ist in dem Falle ja wie eine Frage zu verstehen, "Ist b gleich FALSE?" und die Antwort darauf ist TRUE, genau wie !b TRUE ist wenn b = FALSE ist, in der Klammer steht also letztlich in beiden Fällen "TRUE".

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Fireteufel
28.08.2016, 13:17

Ich danke dir, die Erklärung hat die Erleuchtung gebracht (: 

0
Kommentar von Fireteufel
28.08.2016, 13:34

Eine kurzer Frage noch

Wenn in der if Abfrage nichts von false definiert ist, geht die if Abfrage immer nach true, kann das sein?

0

Es gibt gute Gründe dafür, boolsche Variablen nicht mit True oder False zu vergleichen (insbesondere nicht mit "true"). Je nach Sprache werden "true" und "false" unterschiedlich definiert. Es mag dabei sein, dass eine Variable als "wahr" ausgewertet wird, der Vergleich mit "true" aber "unwahr" ergibt.

Du schreibst ja auch nicht "if ((a == b) == true)" sondern "if (a == b)". Wird ein anständiger Name anstelle von "b" gewählt, wird der Ausdruck zudem lesbarer als ein erneuter Vergleich:

if (!shallContinue) ...
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PWolff
28.08.2016, 14:25

Gerade bei JavaScript sind

(!b)

und

(b == false)

NICHT äquivalent. Insbesondere spielt das eine Rolle bei der Abfrage, ob ein Objekt einen Inhalt hat. Beispiel:

function test() {
var b;
alert("b : " + b);
alert("b == false : " + (b == false));
if (b) {alert("b --> true");};
if (!b) {alert("b --> false");};
};

liefert nacheinander die 3 Nachrichten

b : undefined

b == false : false

b --> false

Anmerkung: bevor man auf Members eines Objektes zugreift, prüft man regelmäßig, ob es auch "existiert", also nicht undefined oder null ist:

if (obj) {obj.tuwas();};
1

Ja, if(!b) macht das selbe wie if(b==false). Was ist jetzt deine eigentliche Frage? Der Code gibt nicht viel Sinn.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Fireteufel
28.08.2016, 13:08

Der Code soll auch nicht wirklich Sinn machen :D Ist eher zum basteln und probieren ;).

Wenn ich auf b klicke und b bekommt den Wert false, weil ich auf Abbrechen klicke, dann müsste !b das ganze doch umdrehen und dann wäre b doch true oder nicht?

1

Was möchtest Du wissen?