Maison > interface Web > js tutoriel > le corps du texte

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

Linda Hamilton
Libérer: 2024-11-18 02:42:02
original
974 Les gens l'ont consulté

Why Do JavaScript Logical Operators Sometimes Return Objects Instead of Booleans?

Opérateurs logiques en JavaScript : comprendre les résultats non booléens

Contrairement aux opérateurs mathématiques, qui renvoient toujours des valeurs numériques, les opérateurs logiques (&& et | |) en JavaScript peut parfois renvoyer des objets au lieu de booléens. Cela peut être contre-intuitif, surtout lorsque vous essayez de les utiliser pour des vérifications conditionnelles.

Pourquoi les objets sont renvoyés

Le || Les opérateurs et && sont des opérateurs logiques de court-circuit, ce qui signifie qu'ils évaluent leurs opérandes de gauche à droite et renvoient la première valeur logique entièrement déterminée. En JavaScript, cette valeur peut être vraie ou fausse, mais elle peut aussi être un objet.

Comprendre la logique conditionnelle

Dans l'expression X || Y, X est évalué en premier et interprété comme une valeur booléenne. Si X est vrai, il est renvoyé immédiatement et Y n'est pas évalué. En effet, l'expression a déjà été déterminée comme étant vraie.

Si X est faux, Y est alors évalué et sa valeur booléenne est renvoyée.

De même, && arrête d'évaluer si le premier argument est faux.

L'astuce avec "Faux"

Le premier point de confusion se produit parce que lorsqu’une expression est évaluée comme « vraie », l’expression elle-même est renvoyée. C'est pourquoi vous pouvez voir des valeurs réelles renvoyées par des expressions logiques.

L'astuce avec Null

Le deuxième point de confusion provient du comportement de JavaScript dans différentes versions. Initialement, il renverrait false pour les expressions « fausses », mais à partir de la version 1.2, il renvoie la valeur réelle de l'expression.

Exemples

Pour illustrer :

var _ = (obj.fn && obj.fn()) || obj._ || (obj._ = {}); // Returns obj.fn() if defined, otherwise obj._
var _ = obj && obj._; // Returns obj._ if obj is true, otherwise obj
Copier après la connexion

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