Maison >interface Web >js tutoriel >JavaScript utilise-t-il l'évaluation de court-circuit dans les opérateurs logiques ?

JavaScript utilise-t-il l'évaluation de court-circuit dans les opérateurs logiques ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-28 21:40:12644parcourir

Does JavaScript Utilize Short-Circuit Evaluation in Logical Operators?

Évaluation de court-circuit de JavaScript - Un guide complet

En programmation, l'évaluation de court-circuit fait référence au comportement dans lequel une expression est évaluée jusqu'à ce que un résultat est connu et le reste de l'expression est ignoré. Ce mécanisme est couramment utilisé dans les instructions conditionnelles pour éviter des calculs inutiles.

JavaScript prend-il en charge l'évaluation des courts-circuits ?

Oui, JavaScript prend en charge l'évaluation des courts-circuits. Comme le démontrent les exemples ci-dessous, && (AND) et || Les opérateurs (OR) présentent ce comportement.

Exemple :

Considérez le code JavaScript suivant :

if (true || foo.foo) {
  // Passes, no errors because `foo` isn't defined.
}

Démo en direct : https://jsfiddle.net/iayzejre/

Explication :

Le || L'opérateur retournera immédiatement vrai une fois que le premier opérande (dans ce cas, vrai) sera évalué comme vrai. Par conséquent, l'expression sera transmise, que foo.foo soit défini ou non, puisque le deuxième opérande n'est pas évalué.

Exemple :

Considérons maintenant ce code :

if (false && foo.foo) {
  // Also passes, no errors because `foo` isn't defined.
}

Démo en direct : https://jsfiddle.net/iayzejre/1/

Explication :

De même, l'opérateur && n'évaluera le deuxième opérande que si le premier opérande est évalué à vrai . Puisque false est toujours faux, la condition échoue immédiatement et foo.foo n'est jamais évalué.

Solution de contournement pour d'autres langages

Si votre langage de codage ne prend pas en charge les raccourcis évaluation du circuit, il existe une solution de contournement possible en utilisant des opérateurs ternaires. Considérez cet exemple C# :

if (true ? true : foo.foo) {
  // Passes without compilation errors.
}

Dans ce cas, l'opérateur ternaire retournera immédiatement vrai si le premier opérande (la vraie condition) est vrai. Si faux, il évaluera le deuxième opérande (l'expression foo.foo). Cependant, cette solution de contournement peut ne pas convenir à tous les scénarios et doit être utilisée avec prudence.

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