ホームページ > ウェブフロントエンド > jsチュートリアル > なぜ `${\'h.className = h.className なのでしょうか? \' エラー\' : \'エラー\'}` が JavaScript で期待どおりに動作しませんか?

なぜ `${\'h.className = h.className なのでしょうか? \' エラー\' : \'エラー\'}` が JavaScript で期待どおりに動作しませんか?

Barbara Streisand
リリース: 2024-10-30 04:34:28
オリジナル
702 人が閲覧しました

Why does `${'h.className  = h.className ? ' error' : 'error'}` not work as expected in JavaScript?

JavaScript における三項演算子の優先順位のトラブルシューティング

JavaScript の三項演算子は、条件付き代入のための強力なツールですが、その優先順位を理解するのは難しい場合があります。この記事では、三項演算子が = と組み合わされる特定のシナリオに焦点を当てています。

問題を理解する

次のコード スニペットを考えてみましょう:

h.className += h.className ? ' error' : 'error'
ログイン後にコピー

一見すると、コードは h.className の現在の値を 3 項条件に基づいて「error」または「error」と連結しているように見えます。ただし、この解釈ではエラーが発生する可能性があります。

正しい解釈

問題は演算子の優先順位にあります。 JavaScript では、演算子は三項演算子よりも優先されます。これは、上記の式が次のように評価されることを意味します:

h.className = h.className + (h.className ? ' error' : 'error')
ログイン後にコピー
ログイン後にコピー

Solution

三項演算子が正しく適用されるようにするには、コードを次のように記述する必要があります。

h.className = h.className + (h.className ? ' error' : 'error')
ログイン後にコピー
ログイン後にコピー

これにより、h.className との連結の前に三項演算子が確実に評価されるようになります。

追加の考慮事項

次の点に注意することが重要です。 h.className = 'error' も有効ですが、更新されたコードほど正確ではありません。 = 演算子は h.className にのみ適用されますが、更新されたコードでは 3 項条件の結果が h.className と明示的に連結されます。

結論

演算子の優先順位を理解することは、正しい JavaScript コードを記述します。この記事では、三項演算子と = 演算子の優先規則を明確にすることで、JavaScript で条件付き代入を使用するときに遭遇する一般的な課題の解決策を提供します。

以上がなぜ `${\'h.className = h.className なのでしょうか? \' エラー\' : \'エラー\'}` が JavaScript で期待どおりに動作しませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート