Heim >Web-Frontend >js-Tutorial >Warum führt JavaScript beim Hinzufügen von Arrays und Objekten zu unerwarteten Ergebnissen?

Warum führt JavaScript beim Hinzufügen von Arrays und Objekten zu unerwarteten Ergebnissen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-16 09:37:10624Durchsuche

Why Does JavaScript Produce Unexpected Results When Adding Arrays and Objects?

Das eigenartige Verhalten von JavaScript-Ergänzungen verstehen

Der „Wat“-Vortrag für CodeMash 2012 brachte einige rätselhafte Verhaltensweisen in JavaScript ans Licht. Hier befassen wir uns mit den zugrunde liegenden Mechanismen und erläutern die im JSFiddle-Beispiel beobachteten Ergebnisse.

Leeres Array Leeres Array

[] + []
result: ""

Die leeren Zeichenfolgen, die sich aus der Verknüpfung der Arrays ergeben, heben hervor, dass der Operator konvertiert beide Operanden für Grundelemente, Aufruf von toString() für Arrays. Bei leeren Arrays erzeugt diese Konvertierung eine leere Zeichenfolge.

Leeres Array-Objekt

[] + {}
result: [Object]

Wie zuvor führt die Konvertierung des leeren Arrays in ein Grundelement zu einer leeren Zeichenfolge. Allerdings wird das Objekt mithilfe seiner toString()-Methode in einen String umgewandelt, was zu „[Object]“ führt. Dieser String wird mit dem leeren String verkettet, wodurch „[Object]“ entsteht.

Object Empty Array

{} + []
result: [Object]

Der {} wird hier als leerer Block interpretiert, was zu einem leeren Grundelement führt Wert. Der Operator versucht dann, das Objekt über toString() in einen String umzuwandeln, was zu „[Object]“ führt. Dieses Verhalten ist jedoch eine Anomalie, da das Video darauf hindeutet, dass das Ergebnis 0 sein sollte.

Objektobjekt

{} + {}
result: [Object][Object]

Ähnlich wie im vorherigen Fall werden die Objekte in Zeichenfolgen umgewandelt. Da es jedoch keinen unären Operator gibt, wird das Ergebnis nicht in eine Zahl umgewandelt. Stattdessen wird die Verkettung von „[Object]“ und „[Object]“ zurückgegeben.

Array(16).join("wat" - 1)

result: NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN

Subtrahieren einer Zahl aus einem String ergibt NaN. Wenn es als Argument an Array.join übergeben wird, erzeugt die Konvertierung in einen String (über toString()) „NaN“. Die Methode „join()“ des Arrays verkettet diese Zeichenfolge dann wiederholt, was zum beobachteten Ergebnis führt.

Schlussfolgerung

Diese besonderen Verhaltensweisen ergeben sich aus den spezifischen Regeln für die Konvertierung von Werten in Grundelemente und dem Verhalten des Operators in JavaScript. Auch wenn einige davon kontraintuitiv erscheinen mögen, ermöglicht das Verständnis der zugrunde liegenden Mechanismen Entwicklern, diese Macken in ihrem eigenen Code besser zu antizipieren und zu bewältigen.

Das obige ist der detaillierte Inhalt vonWarum führt JavaScript beim Hinzufügen von Arrays und Objekten zu unerwarteten Ergebnissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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