Heim >Web-Frontend >js-Tutorial >Warum führt JavaScript bei diesen seltsamen Rechenoperationen zu unerwarteten Ergebnissen?

Warum führt JavaScript bei diesen seltsamen Rechenoperationen zu unerwarteten Ergebnissen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-24 18:19:14628Durchsuche

Why Does JavaScript Produce Unexpected Results in These Strange Arithmetic Operations?

Rätselhafte JavaScript-Verhaltensweisen im „Wat“-Talk

Der „Wat“-Talk für CodeMash 2012 hat einige eigenartige Verhaltensweisen in JavaScript hervorgehoben, und das ist es auch Es lohnt sich, sie zu erkunden, um zu verstehen, was hinter den Kulissen passiert.

[] []
Der mit leeren Arrays verwendete Additionsoperator ( ) wandelt Operanden in Grundelemente um und verbindet sie. Da der standardmäßige Grundwert von Arrays ein leerer String ist, ist das Ergebnis von [] [] ein leerer String.

[] {}
Objekte in JavaScript haben einen toString() Methode, die beim Aufruf „[object Object]“ zurückgibt. Somit ergibt [] {} ein Objekt, insbesondere die Zeichenfolge „[object Object]“.

{} []
Bei Verwendung in einer Anweisung wird {} analysiert als leerer Block und gibt daher undefiniert zurück. Der Operator erzwingt undefinierte Operanden in Zahlen, was zu 0 für {} [] führt (wobei im „Wat“-Talk erwähnt wird, dass es NaN sein sollte).

{} {}
Ähnlich bis {} [] wird das erste {} als leerer Block analysiert, was zu undefiniert führt. Der Operator schafft es jedoch nicht, die Zeichenfolge „[object Object]“ (den toString()-Wert des zweiten {}) in eine Zahl umzuwandeln, was zu NaN.

Array(16).join führt ("wat" - 1)
ToNumber() konvertiert "wat" - 1 in NaN, da das Subtrahieren einer Zahl von einer Zeichenfolge a ergibt nicht numerischer Wert. ToPrimitive() wandelt dann NaN in die Zeichenfolge „NaN“ um, die beim Zusammenfügen der Array-Elemente 16 Mal wiederholt wird.

Fazit
Diese scheinbar bizarren Verhaltensweisen sind auf die primitiven Konvertierungsregeln von JavaScript zurückzuführen und die spezifischen Methoden, die Arrays und Objekten zugeordnet sind. Wenn Sie diese zugrunde liegenden Mechanismen verstehen, können Sie unerwartete Ergebnisse vermeiden und die volle Leistungsfähigkeit von JavaScript nutzen.

Das obige ist der detaillierte Inhalt vonWarum führt JavaScript bei diesen seltsamen Rechenoperationen 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