Heim > Web-Frontend > js-Tutorial > Warum führt JavaScript zu unerwarteten Ergebnissen bei der Verkettung und Arithmetik von Zeichenfolgen und Zahlen?

Warum führt JavaScript zu unerwarteten Ergebnissen bei der Verkettung und Arithmetik von Zeichenfolgen und Zahlen?

Susan Sarandon
Freigeben: 2024-12-26 01:54:12
Original
617 Leute haben es durchsucht

Why Does JavaScript Produce Unexpected Results in String and Number Concatenation and Arithmetic?

JavaScript-Quirks enträtselt: Erklären der Kuriositäten aus dem „Wat“-Talk

Empty Array Empty Array: Die Leerheitsverkettung

Wenn zwei leere Arrays hinzugefügt werden, konvertiert JavaScript diese zunächst in Grundelemente. In diesem Fall ist der Standardwert eines Arrays eine leere Zeichenfolge, sodass das Ergebnis die Verkettung zweier leerer Zeichenfolgen ist: eine leere Zeichenfolge.

Leeres Array-Objekt: Die Objektbereinigung

Das Konvertieren des leeren Arrays in ein Grundelement (leere Zeichenfolge) und des Objekts in ein Grundelement (seine Zeichenfolgendarstellung „[Objekt Objekt]“) führt zur Verkettung von eine leere Zeichenfolge und eine Objektdarstellung, was „[object Object]“ ergibt.

Object Empty Array: JavaScript's Unconventional Arithmetic

Im Gegensatz zum Video wird in der bereitgestellten JSFiddle das Ergebnis von {} [] ist [Object] statt 0. Diese Diskrepanz entsteht, weil der leere Block {} als Blockanweisung interpretiert wird, die als ausgewertet wird leer. Der unäre Operator wandelt den leeren Wert in eine Zahl um, was zu 0 führt. Da Sie ihn jedoch innerhalb eines Funktionsarguments verwenden, muss die Anweisung zwangsweise als Ausdrucksanweisung interpretiert werden. Dies führt dazu, dass {} als leeres Objektliteral statt als leerer Block geparst wird, was zu [Objekt] führt.

Objektobjekt: Eine nicht übereinstimmende Ausgabe

Das Ergebnis of {} {} sollte „object Object“ sein, aber die JSFiddle zeigt ein anderes Ergebnis. Diese Diskrepanz ist wahrscheinlich auf das implementierte spezifische Verhalten von JavaScript zurückzuführen, bei dem das Ergebnis des Hinzufügens von zwei Objekten zu einer Zeichenfolge variieren kann.

Array(16).join("wat" - 1): NaN Propagation

Die Eingabezeichenfolge für diesen Ausdruck ist „NaN-1“, was NaN ergibt. Wenn JavaScript versucht, „NaN“ mit den leeren String-Elementen des Arrays zu verketten, ist das Ergebnis gemäß dem Verkettungsalgorithmus immer NaN.

„wat“ 1 vs. „wat“ – 1: Der String vs . Zahlenkonvertierung

In „wat“ 1 konvertiert JavaScript 1 in eine Zeichenfolge, was zu „wat1“ führt. Andererseits wird in „wat“ - 1 versucht, „wat“ in eine Zahl umzuwandeln, was zu NaN führt. Da der Verkettungsoperator als erstes Argument eine Zeichenfolge erfordert, wird NaN wieder in eine Zeichenfolge umgewandelt, was dazu führt, dass „NaN“ wiederholt wird.

Das obige ist der detaillierte Inhalt vonWarum führt JavaScript zu unerwarteten Ergebnissen bei der Verkettung und Arithmetik von Zeichenfolgen und Zahlen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage