1. || (logique ou),
Littéralement, False n'est retourné que lorsque les deux avant et après Faux, sinon vrai, sont retournés.
alert (true || false); // trueAlert (false || true); // trueAlert (true || true); // trueAlert (false || false); // FAUX
Ce fou le sait ~~
Cependant, dans un sens plus profond, il y a un autre monde. Essayez le code suivant
alerte (0 || 1); // 1
De toute évidence, nous savons que le premier 0 signifie faux, et le second signifie vrai, alors le résultat ci-dessus devrait être vrai, et le fait renvoie le résultat est 1. Regardez le code suivant:
alerte (2 || 1); // 2
Nous savons que les 2 premiers sont vrais et que le dernier est vrai. Alors, quel est le résultat de retour? Le résultat du test est 2, continuez à lire:
alert ('a' || 1); // 'a'De même, le premier «A» est vrai, et le 1 suivant est vrai; Le résultat du test est «A», et les suivants
alert ('' || 1); // 1D'après ce qui précède, nous savons que l'avant "est faux, le dos 1 est vrai et le résultat de retour est 1. Regardez les suivants
alert ('a' || 0); // 'a'Le premier «A» est vrai, et le 0 suivant est faux, le résultat de retour est «a», continuez à ce qui suit
alert ('' || 0); // 0Le précédent "est faux, et le 0 suivant est également faux, et le résultat de retour est 0
alerte (0 || ''); // ''
Le premier 0 est faux, le suivant "est faux, le résultat de retour est"
Cela signifie
1. Tant que "||" est faux devant "||", peu importe si "||" est vrai ou faux à l'arrière de "||", la valeur après "||" sera retourné.
2. Tant que "||" est vrai, que ce soit "||" est vrai ou faux, la valeur avant "||" sera retourné.
J'appelle cela le principe de court-circuit: si vous connaissez le résultat du premier, vous saurez la sortie par la suite. Si le premier est vrai, prenez la valeur de la première, et si la première est fausse, prenez la valeur du second.
6 balles dont JS doit se souvenir: N'oubliez pas: dans JS Logical Operations, 0, "", Null, False, Undefined, et Nan sera jugé faux, et les autres sont vrais (il semble qu'il n'y ait pas d'omission, veuillez confirmer). Vous devez vous en souvenir, sinon il y aura des problèmes avec l'application || et &&.
Soit dit en passant: je vous demande souvent pourquoi je n'écris pas si (att) directement si (att);
En fait, c'est une façon d'écrire plus rigoureuse:
Veuillez tester la différence entre le typeof 5 et le typeof !! 5. La fonction de !! est de convertir une variable d'autres types en type bool.
2. && (logistique et)
Littéralement, le vrai ne sera retourné que lorsque les deux avant et après seront vrais, sinon faux sera retourné.
alert (true && false); // falSalert (true && true); // trueAlert (false && false); // falSalert (false && true); // FAUX
Ensuite, sur la base de l'expérience ci-dessus, regardons la situation où les numéros "&&" ne sont pas seulement des types booléens.
alert ('' && 1); // ''Le nœud est retourné "," && "avant" est faux, et le 1 est vrai après.
alert ('' && 0); // ''Le nœud est retourné "," && "avant" est faux, et le 0 est également faux.
alert ('a' && 1); // 1Le nœud renvoie 1, "&&" avant "a est vrai, et ce qui suit est 1 est également vrai.
alert ('a' && 0); // 0Le nœud renvoie 0, "&&" avant "a est vrai, et ce qui suit est 0 est faux.
alert ('a' && ''); // ''Le nœud est retourné "," && "avant" a est vrai, et "après" est faux.
alerte (0 && 'a'); // 0
Le nœud renvoie 0, "&&" avant "0 est faux, et le 'A' est vrai.
alert (0 && ''); // 0
Le nœud renvoie 0, "&&" avant "0 est faux, et l'après" est également faux.
Principe de court-circuit
1. Tant que "&&" est faux, peu importe si "&&" est vrai ou faux, la valeur avant "&&" sera renvoyée;
2. Tant que "&&" est vrai, peu importe si "&&" est vrai ou faux, le résultat renvoie la valeur après "&&";
3. Application en développement
Les trois codes suivants sont équivalents:
a = a || "defaultValue"; if (! a) {a = "defaultValue"; } if (a == null || a == "" || a == Undefined) {a = "defaultValue"; }Lequel voulez-vous utiliser?
2. Comme var yahoo = yahoo || {}; est très largement utilisé. N'est-ce pas le moyen d'obtenir la valeur initiale élégante? que si. . . . Sinon ... beaucoup mieux, mieux que? : C'est beaucoup mieux.
3. Callback && callback ()
Dans les rappels, cela est souvent écrit de cette manière, et c'est plus rigoureux. Tout d'abord, déterminez si le rappel existe. S'il existe, exécutez-le. Le but de l'écriture de cette façon est d'éviter que les erreurs soient signalées.
Si vous écrivez un rappel () directement; Le code rapportera une erreur lorsque le rappel n'existe pas.
4. Exemples complets
Les exigences sont indiquées sur la figure:
Écrivez une description d'image ici
Supposons que le taux de croissance est spécifié comme suit:
1 flèche est affichée lorsque le taux de croissance est de 5;
2 flèches sont affichées lorsque le taux de croissance est de 10;
3 flèches sont affichées lorsque le taux de croissance est de 12;
4 flèches sont affichées lorsque le taux de croissance est de 15;
Tous les autres affichent 0 flèches.
Comment l'implémenter avec le code?
Un peu si, sinon:
var add_level = 0; if (add_step == 5) {add_level = 1; } else if (add_step == 10) {add_level = 2; } else if (add_step == 12) {add_level = 3; } else if (add_step == 15) {add_level = 4; } else {add_level = 0; }Un commutateur légèrement meilleur:
var add_level = 0; switch (add_step) {cas 5: add_level = 1; casser; cas 10: add_level = 2; casser; cas 12: add_level = 3; casser; cas 15: add_level = 4; casser; par défaut: add_level = 0; casser;}Si l'exigence est modifiée en:
Le taux de croissance est de> 12 et 4 flèches sont affichées;
3 flèches sont affichées lorsque le taux de croissance est> 10;
La vitesse de croissance est de> 5 et 2 flèches sont affichées;
La vitesse de croissance> 0 montre 1 flèche;
La vitesse de croissance est <= 0 et 0 flèches sont affichées.
Ensuite, il sera très difficile à implémenter avec Switch.
Alors, avez-vous déjà pensé à l'implémenter en une seule ligne?
Ok, jetons un coup d'œil à la puissante expressivité de JS:
var add_level = (add_step == 5 && 1) || (add_step == 10 && 2) || (add_step == 12 && 3) || (add_step == 15 && 4) || 0;
Plus puissant et meilleur:
var add_level = {'5': 1, '10 ': 2, '12': 3, '15 ': 4} [add_step] || 0;La deuxième exigence:
var add_level = (add_step> 12 && 4) || (add_step> 10 && 3) || (add_step> 5 && 2) || (add_step> 0 && 1) || 0;
Ce qui précède est une analyse complète des "&&" et "||" Les opérateurs de JavaScript vous ont présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!