Heim > Web-Frontend > js-Tutorial > Warum wird ein leeres Array in JavaScript sowohl als wahr als auch als falsch ausgewertet?

Warum wird ein leeres Array in JavaScript sowohl als wahr als auch als falsch ausgewertet?

DDD
Freigeben: 2024-11-07 17:59:03
Original
525 Leute haben es durchsucht

Why Does an Empty Array Evaluate to Both True and False in JavaScript?

Enthüllung des Paradoxons: Leere Arrays in der Twilight Zone von Boolean

Leere Arrays, scheinbar rätselhaft, weisen eine eigenartige Dualität auf und werten gleichzeitig aus wahr und falsch. Dieses faszinierende Verhalten ist auf die implizite Konvertierung zurückzuführen, die sich innerhalb von Gleichheitsoperatoren abspielt.

Im bereitgestellten Codeausschnitt werden wir diese Dualität aus erster Hand erleben:

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??");
Nach dem Login kopieren

Um dieses Rätsel zu entschlüsseln, vertiefen wir uns in die Mechanik des Gleichheitsoperators. Bei Verwendung mit Objekten (in diesem Fall handelt es sich bei Arrays um Objekte) wird deren Vorhandensein überprüft. Wenn (arr) also „true“ zurückgibt, weil ein leeres Array ein gültiges Objekt ist.

Die Dinge werden jedoch unklarer, wenn Arrays mit falschen Grundelementen mithilfe des ==-Operators verglichen werden. Dieser Vergleich beinhaltet die Konvertierung des Arrays in einen String über arr.toString(). Die resultierende leere Zeichenfolge, die als „“ bezeichnet wird, wird in JavaScript als falscher Wert betrachtet.

Daher wird if (arr == false) als wahr ausgewertet, da die leere Zeichenfolge in diesem Kontext gleich dem falschen Grundelement ist. Dieser scheinbare Widerspruch ergibt sich aus der impliziten Typkonvertierung, die JavaScript durchführt.

Um die Verwirrung zu beseitigen, sollte man sich für den dreifachen Gleichheitsoperator (===) entscheiden, der sowohl Wert als auch Typgleichheit berücksichtigt. Dadurch wird sichergestellt, dass ein leeres Array niemals als falsch betrachtet wird.

Zusammenfassend lässt sich sagen, dass die scheinbare Dichotomie, dass leere Arrays sowohl wahr als auch falsch sind, auf die unterschiedlichen Auswertungen zurückzuführen ist, die von den Gleichheits- und strikten Gleichheitsoperatoren durchgeführt werden, was das Subtile hervorhebt Komplexität der JavaScript-Typverarbeitung.

Das obige ist der detaillierte Inhalt vonWarum wird ein leeres Array 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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage