Maison > Article > interface Web > Pourquoi les opérateurs logiques JavaScript renvoient-ils parfois des objets au lieu de booléens ?
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
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!