Maison >interface Web >js tutoriel >Quand les opérateurs logiques JavaScript renvoient-ils des objets au lieu de booléens ?

Quand les opérateurs logiques JavaScript renvoient-ils des objets au lieu de booléens ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-04 06:00:22921parcourir

When Do JavaScript Logical Operators Return Objects Instead of Booleans?

Opérateurs logiques en JavaScript : au-delà des résultats booléens

En JavaScript, tandis que les opérateurs logiques tels que '&&' (AND) et '|| ' (OR) renvoie généralement des résultats booléens, certaines circonstances peuvent conduire au retour d'autres objets.

Pour comprendre pourquoi, il est crucial de saisir le concept d'évaluation de court-circuit. "&&" et "||" sont des opérateurs de court-circuit, c'est-à-dire qu'ils cessent d'évaluer une fois le résultat logique déterminé.

Dans l'expression 'X || Y', 'X' est évalué en premier. Si « X » est déterminé comme étant « vrai », l’expression renvoie « X » sans autre évaluation. C'est là qu'intervient le « court-circuit ». D'un autre côté, si « X » est « faux », « Y » est évalué et l'expression renvoie « Y ».

De même, « && » fonctionne en renvoyant le premier argument « vrai » ou le dernier argument "faux".

Le problème vient de la gestion par JavaScript de la véracité et de la fausseté. En JavaScript, les valeurs suivantes sont considérées comme « fausses » : 'false', '0', '-0', '', 'null', 'undefined', 'NaN' et 'document.all'.

Par conséquent, si une expression est évaluée comme « fausse », au lieu de renvoyer un booléen « faux » comme dans les versions précédentes de JavaScript, les implémentations modernes renvoient la valeur réelle évaluée. expression.

Ce comportement explique pourquoi les expressions fournies dans la question entraînent le retour d'objets plutôt que de valeurs booléennes strictes. Si 'obj.fn()' ou 'obj._' est défini, il renverra le résultat de cette expression, car ils ne font pas partie des valeurs considérées comme « fausses ».

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