Maison >interface Web >js tutoriel >Pourquoi l'opérateur ternaire de JavaScript se comporte-t-il différemment lorsqu'il est utilisé avec l'opérateur ` =` ?

Pourquoi l'opérateur ternaire de JavaScript se comporte-t-il différemment lorsqu'il est utilisé avec l'opérateur ` =` ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-29 22:41:03316parcourir

Why Does JavaScript's Ternary Operator Behave Differently When Used with the ` =` Operator?

Opérateur ternaire et priorité des opérateurs de JavaScript

Comprendre l'ordre dans lequel les opérations sont effectuées dans le code est crucial pour éviter des résultats inattendus. En JavaScript, l'opérateur ternaire présente un défi courant, en particulier lorsqu'il est combiné avec d'autres opérateurs.

Considérez l'extrait de code suivant :

h.className += h.className ? ' error' : 'error'

On pourrait supposer que le code fonctionne comme suit :

h.className = h.className + h.className ? ' error' : 'error'

Cependant, cette interprétation est incorrecte car elle entraîne une erreur de console. Pour bien comprendre le code, il est essentiel de considérer la priorité des opérateurs.

Réponse :

La clé pour comprendre le code est de se rendre compte que l'opérateur a priorité sur le ternaire opérateur. Par conséquent, le code est évalué comme suit :

h.className = h.className + (h.className ? ' error' : 'error')

Dans ce cas, l'opérateur concatène h.className avec le résultat de l'opérateur ternaire. L'opérateur ternaire vérifie la véracité de h.className et renvoie « error » si c'est vrai, ou « error » dans le cas contraire.

Pour éviter toute confusion, il est conseillé d'être explicite sur la cible de l'opération. Dans ce cas, l'utilisation de parenthèses pour regrouper l'expression garantit que l'opérateur est appliqué à h.className, comme prévu.

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!

Déclaration:
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