Commençons par deux questions :
La première question est de savoir pourquoi a && b renvoie vrai, et b && a renvoie 6
1 var user = 6;2 var both = true;3 4 console.log( user && both); //true5 console.log( both && user); //6
La deuxième question Les deux effectuent une auto-décrémentation, et la valeur finale imprimée est toujours 3
1 var user = false;2 var both = 3;3 4 console.log( user && both--); // false5 console.log(both); // 3
Comprenons-le à trois niveaux (en prenant && comme exemple) :
Compréhension de premier niveau : les opérandes sont tous des valeurs booléennes, le résultat n'est vrai que lorsque les deux sont vrais, sinon c'est faux.
Compréhension de deuxième niveau : && peut opérer sur des valeurs vraies et des valeurs fausses. Si les deux sont de vraies valeurs, une valeur vraie est renvoyée, sinon une valeur fausse est renvoyée. Cependant, les valeurs vraies ne sont pas limitées à vrai, et les valeurs fausses ne sont pas limitées à faux. Les valeurs suivantes seront converties en faux (toutes les autres valeurssont vraies)
. undefined
null
0/-0
NaN
" "
En js, lors de l'exécution de l'opération &&, le résultat est pas toujours vrai ou faux, mais la valeur actuelle. La valeur actuelle peut être une valeur numérique, une chaîne, etc.
Si la première expression est vraie, alors la valeur de la deuxième expression est utilisée comme résultat. Ce résultat n'est pas la valeur convertie, mais elle-même.
Si la première expression est fausse, alors la valeur de la première expression est utilisée comme résultat. Ce résultat n'est pas la valeur convertie, mais elle-même.
user = 6 both = math = 0 console.log( user && both); console.log( both && user); console.log( both && math); console.log( math && both);
Le troisième niveau de compréhension : opération de court-circuit, le processus d'opération, calculez d'abord la valeur de l'opérande de gauche, si le résultat du calcul est une fausse valeur, alors le résultat de l'expression entière est une fausse valeur, c'est-à-dire l'opérande de gauche. La valeur de arrête également l'évaluation de l'opérande de droite. Si le résultat de l’opérande de gauche est vrai, le résultat entier dépend de la valeur de l’opérande de droite.
Explication sur l'opération de court-circuit :
Dans les opérations && et ||, si la valeur de la première expression peut déjà déterminer le résultat de l'ensemble de l'opération, alors la deuxième expression le fera ne pas être exécuté
Pour l'opération &&, la valeur de la première expression est fausse, ce qui détermine que tout le résultat de l'opération est faux, donc la première expression ne sera pas exécutée, donc y-- n'est pas exécuté. La valeur de y est toujours 3
x = y = 3 console.log(x && y--); console.log(y);
Pour ||,
Si la valeur de la première expression est vraie, le résultat est la valeur de la première expression, pas Après conversion, c'est lui-même.
Si la première expression est évaluée comme fausse, le résultat est la valeur de la deuxième expression, non pas après conversion, mais elle-même.
1 var user = true;2 var both = 10;3 4 console.log(user || ++both); //true5 console.log(both); //10
&& a exactement le même principe que ||, mais les règles de fonctionnement sont différentes.
1 var a = 10;2 var b = true;3 var c = 0;4 5 console.log(a || b); //106 console.log(b || a); //true7 8 console.log(b || c); //true9 console.log(c || b); //true
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!