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 vorhanden ist (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.
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