Maison > interface Web > js tutoriel > Pourquoi `${\'h.className = h.className ? \'erreur\' : \'erreur\'}` ne fonctionne pas comme prévu en JavaScript ?

Pourquoi `${\'h.className = h.className ? \'erreur\' : \'erreur\'}` ne fonctionne pas comme prévu en JavaScript ?

Barbara Streisand
Libérer: 2024-10-30 04:34:28
original
702 Les gens l'ont consulté

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

Dépannage de la priorité des opérateurs ternaires en JavaScript

L'opérateur ternaire de JavaScript est un outil puissant pour les affectations conditionnelles, mais comprendre sa priorité peut être délicat. Cet article se concentre sur un scénario spécifique dans lequel l'opérateur ternaire est combiné avec =.

Comprendre le problème

Considérez l'extrait de code suivant :

h.className += h.className ? ' error' : 'error'
Copier après la connexion

À première vue, le code semble concaténer la valeur actuelle de h.className avec « erreur » ou « erreur » en fonction de la condition ternaire. Cependant, cette interprétation peut conduire à des erreurs.

Interprétation correcte

Le problème réside dans la préséance des opérateurs. En JavaScript, l'opérateur a une priorité plus élevée que l'opérateur ternaire. Cela signifie que l'expression ci-dessus est évaluée comme suit :

h.className = h.className + (h.className ? ' error' : 'error')
Copier après la connexion
Copier après la connexion

Solution

Pour garantir que l'opérateur ternaire est appliqué correctement, le code doit être écrit comme suit :

h.className = h.className + (h.className ? ' error' : 'error')
Copier après la connexion
Copier après la connexion

Cela garantit que l'opérateur ternaire est évalué avant la concaténation avec h.className.

Considérations supplémentaires

Il est important de noter que h.className = 'error' est également valide, mais il n'est pas aussi précis que le code mis à jour. L'opérateur = s'applique uniquement à h.className, alors que le code mis à jour concatène explicitement le résultat de la condition ternaire avec h.className.

Conclusion

Comprendre la priorité des opérateurs est crucial pour écrire du code JavaScript correct. En clarifiant les règles de priorité pour l'opérateur ternaire et l'opérateur =, cet article fournit une solution à un défi courant rencontré lors de l'utilisation d'affectations conditionnelles en JavaScript.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal