JavaScript コードが `h.className = h.className で失敗するのはなぜですか? \' エラー\' : \' エラー\'`?

DDD
リリース: 2024-10-31 21:46:02
オリジナル
804 人が閲覧しました

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

演算子の優先順位の謎: 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!