Heim  >  Artikel  >  Web-Frontend  >  Warum schlägt mein JavaScript-Code mit „h.className = h.className“ fehl? \'error\' : \'error\'`?

Warum schlägt mein JavaScript-Code mit „h.className = h.className“ fehl? \'error\' : \'error\'`?

DDD
DDDOriginal
2024-10-31 21:46:02807Durchsuche

Why Does My JavaScript Code Fail with `h.className  = h.className ? ' error' : 'error'`?

Operator Precedence Enigma: Ternärer Operator und Verkettung von JavaScript

Die Verwendung des ternären Operators in JavaScript kann verwirrend sein, insbesondere wenn er mit anderen vermischt wird Betreiber. Betrachten Sie den folgenden Codeausschnitt:

h.className += h.className ? ' error' : 'error'

Der Zweck dieses Codes besteht darin, die Zeichenfolge „error“ an die className-Eigenschaft des HTML-Elements „h“ anzuhängen. Der Code schlägt jedoch mit einem Fehler fehl. Um zu verstehen, warum, müssen wir die Operatorpriorität in JavaScript analysieren.

Der ternäre Operator (?:) hat eine höhere Priorität als der Zuweisungsoperator (=). Daher entspricht der obige Code:

h.className = h.className + (h.className ? ' error' : 'error')

Diese Interpretation ist sinnvoller. Der ternäre Operator prüft, ob h.className nicht null oder undefiniert ist (ein „wahrer“ Wert). Wenn „true“, wird „error“ an h.className angehängt. Andernfalls wird „error“ angehängt.

Um den ursprünglichen Code zu korrigieren, müssen wir den Zuweisungsoperator explizit in Klammern hinzufügen:

h.className = h.className + (h.className ? ' error' : 'error')

Indem wir den Zuweisungsoperator in Klammern setzen, überschreiben wir ihn die Vorrangregeln und stellen sicher, dass der gesamte ternäre Ausdruck h.className.

zugewiesen wird

Das obige ist der detaillierte Inhalt vonWarum schlägt mein JavaScript-Code mit „h.className = h.className“ fehl? \'error\' : \'error\'`?. 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