Verwirrung über die Wahrhaftigkeit und Gleichheit leerer Arrays mit Falsch
In JavaScript gelten leere Arrays als wahr. Wenn sie jedoch mit dem Grundwert „false“ verglichen werden, ergeben sie ebenfalls „false“. Dieses verwirrende Verhalten kann auf die impliziten Typkonvertierungen zurückgeführt werden, die von Gleichheitsoperatoren durchgeführt werden.
Sehen wir uns den bereitgestellten Beispielcode genauer an:
var arr = []; console.log('Array:', arr); if (arr) console.log("It's true!"); if (arr == false) console.log("It's false!"); if (arr && arr == false) console.log("...what??");
Die erste if-Anweisung prüft, ob arr ist vorhanden (da es ein Objekt ist). Da arr ein Array-Objekt ist, ist es vorhanden und die Bedingung ergibt true.
Die zweite if-Anweisung vergleicht jedoch den Wert von arr (nach dem Aufruf von toString()) mit dem primitiven Wert false. In JavaScript wird [] beim Aufruf mit toString() in einen leeren String („“) konvertiert, der als falscher Wert betrachtet wird (zusammen mit null, undefiniert, 0 usw.). Daher wird die Bedingung auch als falsch ausgewertet.
Die dritte if-Anweisung kombiniert die beiden vorherigen Bedingungen mit dem UND-Operator (&&). Da sowohl arr (jetzt eine leere Zeichenfolge) als auch arr == false (wahr und falsch) als falsch ausgewertet werden, wird die gesamte Bedingung als falsch ausgewertet.
Zusammenfassend lässt sich sagen, dass leere Arrays in dem Sinne wahr sind, in dem sie berücksichtigt werden vorhanden und als wahr ausgewertet, wenn es in Objekt- oder Bedingungskontexten verwendet wird. Im Vergleich zum Grundwert „false“ werden sie jedoch aufgrund impliziter Typkonvertierungen, die durch Gleichheitsoperationen durchgeführt werden, als „false“ ausgewertet.
Das obige ist der detaillierte Inhalt vonWarum werden leere Arrays in JavaScript sowohl als wahr als auch als falsch ausgewertet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!