Heim > Artikel > Web-Frontend > Warum schlägt mein JavaScript-Code mit „h.className = h.className“ fehl? \'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 wirdDas 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!