Les opérateurs logiques "&&", "||" et "!" effectuent des opérations arithmétiques booléennes sur les opérations. Ils sont souvent utilisés avec des opérateurs relationnels qui combinent plusieurs expressions relationnelles pour en former une plus complexe.
i. L'opérateur logique ET
"&&" peut être compris à partir de trois niveaux différents. La compréhension la plus simple est que lorsque les opérandes sont tous deux des valeurs booléennes, "&&" effectue une opération booléenne ET (ET) sur deux valeurs booléennes, uniquement lorsque le premier opérande et le deuxième opérande sont tous deux vrais, il renvoie vrai. l'opérande est faux, alors il renvoie faux.
"&&" est utilisé pour connecter deux expressions relationnelles
x == 0 && y == 0 //Renvoie vrai uniquement lorsque x et y sont tous les deux 0
Les expressions relationnelles renvoient toujours vrai ou faux, donc lorsqu'elles sont utilisées comme ceci, "&&" lui-même renvoie également vrai ou faux. Les opérateurs relationnels ont une priorité plus élevée que "&&" (et "||"), donc des expressions comme celle-ci peuvent être écrites en toute sécurité sans avoir besoin de parenthèses.
L'opérande "&&" n'est pas forcément une valeur booléenne. Rappelons que certaines valeurs peuvent être considérées comme des "vraies valeurs" et des "fausses valeurs". (Si la fausse valeur est : false null undefined 0 -0 NaN et "", toutes les valeurs, y compris tous les objets, sont de vraies valeurs). Le deuxième niveau de compréhension de "&&" est que "&&" peut effectuer une opération booléenne ET (ET) sur des valeurs vraies et fausses. Si les deux opérandes sont vrais, alors une valeur vraie est renvoyée ; sinon, au moins un opérande est faux. Chaque fois qu'une valeur booléenne est utilisée en JavaScript, l'instruction d'expression la traitera comme une valeur vraie ou fausse, donc en fait "&&" ne renvoie pas toujours vrai et faux. Mais ce n'est pas grave.
Il convient de noter que l'opérateur mentionné ci-dessus renvoie la « vraie valeur » et la « fausse valeur », mais il n'explique pas ce qu'est la « vraie valeur » ou la « fausse valeur ». Pour cette raison, discutons-en dans. approfondir la compréhension de la troisième couche de « && ». L'opérateur calcule d'abord la valeur de l'opérande de gauche, c'est-à-dire qu'il calcule d'abord l'expression à gauche de "&&". Si le résultat du calcul est une valeur fausse, alors le résultat de l'expression entière doit être une valeur fausse. donc "&&" renvoie simplement l'opérande de gauche La valeur de l'opération, sans calculer l'opérande de droite.
var o = { x: 1 }; var p = null; o && o.x; //=>1 : 1:0是真值,因此返回值是o.x p && p.x //= null :p是假值,因此将其返回,而并不计算p.x
Il est crucial de comprendre que "&&" peut ne pas calculer le bon opérande. Dans le code ci-dessus, la valeur de la variable P est nulle, et si p.x est calculé, une exception sera levée. Erreur, donc le comportement p.x
"&&" est parfois appelé "court-circuit" (court-circuit), on peut souvent voir de nombreux codes en profiter pour exécuter du code de manière conditionnelle. Par exemple, les deux codes suivants sont équivalents
if (a == b) stop(); //只有a==b时才能调运stop() (a == b) && stop(); //同上
De manière générale, lorsque l'expression à droite de "&&" a des effets secondaires (expressions d'affectation, d'incrémentation, de décrémentation et d'appel de fonction), une attention particulière doit être apportée soyez prudent. Car l'exécution de ces expressions avec effets secondaires dépend du résultat du calcul de l'opérateur gauche de la souris.
Bien que "&&" puisse effectuer certaines opérations d'expression complexes selon les deuxième et troisième niveaux de compréhension, dans la plupart des cas, "&&" n'est utilisé que pour opérer sur des valeurs booléennes vraies et fausses.
ii. OU logique (||)
L'opérateur "||" effectue une opération booléenne OU (OR) sur deux opérandes. Si l'un des opérandes est vrai, il renvoie vrai, si les deux opérandes sont faux, il renvoie faux.
Bien que l'opérateur "||" effectue simplement une simple opération booléenne OR (OR) dans la plupart des cas, comme "&&", il a également des comportements plus complexes. Il calcule d'abord la première valeur d'opérande, c'est-à-dire. Autrement dit, l'expression de gauche est évaluée en premier. Si le résultat de l'évaluation est vrai, la valeur vraie est renvoyée. Sinon, la deuxième valeur est évaluée.
est identique à "&&". Il faut éviter que l'opérande droit contienne des expressions avec des effets secondaires. À moins que vous n'utilisiez explicitement des expressions avec des effets secondaires sur le côté droit, le côté droit peut ne pas être calculé. expression.
La manière la plus courante d'utiliser cet opérateur est de sélectionner la première expression à valeur vraie parmi un ensemble d'expressions alternatives.
//如果max_width已经定义了,则直接使用它。赋值在preferences对象中查找max_width //如果没有定义它,则使用一个写死的常量。 var max =max_width || preferences.max_windth || 500;
Cet usage courant se situe généralement dans le corps d'une fonction pour fournir des valeurs par défaut pour les paramètres.
//将o成功的属性复制到p中,并返回p function copy(o, p) { p = p || {}; //如果向参数p没有传入任何对象,则使用一个新创建对象。 //函数体内的主逻辑
iii. NON logique (!)
L'opérateur "!" est un opérateur unaire qui se place avant un seul opérande. Son but est d'annuler la valeur booléenne de l'opérande.
Contrairement aux opérateurs "&&" et "||", l'opérateur "!" convertit d'abord son opérande en une valeur booléenne, puis annule la valeur booléenne. Autrement dit, "!" renvoie toujours vrai et faux. De plus, vous pouvez obtenir la valeur booléenne d'une valeur en utilisant deux opérations NON logiques :
"!" a une priorité élevée et est étroitement liée à l'opérande. Si vous souhaitez comparer p && q , vous en avez besoin. parenthèses rondes !(p && q). Le code suivant :
!(p && q) === !p || !q !(p || q) === !p && !q
Pour toute valeur de p et q, ces deux expressions seront toujours valables.
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!