ホームページ > 記事 > ウェブフロントエンド > JavaScript コードが `h.className = h.className で失敗するのはなぜですか? \' エラー\' : \' エラー\'`?
演算子の優先順位の謎: JavaScript の三項演算子と連結
JavaScript での三項演算子の使用は、特に他の演算子と混在している場合に混乱する可能性があります。オペレーター。次のコード スニペットを考えてみましょう:
h.className += h.className ? ' error' : 'error'
このコードの目的は、HTML 要素 'h' の className プロパティに文字列 'error' を追加することです。ただし、コードはエラーで失敗します。その理由を理解するには、JavaScript の演算子の優先順位を詳しく調べる必要があります。
三項演算子 (?:) は代入演算子 (=) よりも優先されます。したがって、上記のコードは次と同等です:
h.className = h.className + (h.className ? ' error' : 'error')
この解釈はより理にかなっています。三項演算子は、h.className が null または未定義 (「真の」値) でないかどうかをチェックします。 true の場合、h.className に「error」が追加されます。それ以外の場合は、'error' が追加されます。
元のコードを修正するには、括弧内に代入演算子を明示的に追加する必要があります。
h.className = h.className + (h.className ? ' error' : 'error')
代入演算子を括弧内に配置することで、オーバーライドします。優先順位ルールを確認し、三項式全体が h.className.
に割り当てられるようにします。以上がJavaScript コードが `h.className = h.className で失敗するのはなぜですか? \' エラー\' : \' エラー\'`?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。