Ces deux opérateurs sont souvent utilisés et ils sont toujours confus et enregistrés. . .
a () && b (): si le vrai est renvoyé après l'exécution d'un (), alors b () est exécuté et la valeur de b est renvoyée; Si false est renvoyé après l'exécution de A (), l'expression entière renvoie la valeur de a () et b () ne s'exécute pas;
a () || B (): si True est renvoyé après l'exécution de A (), l'expression entière renvoie la valeur de a () et b () ne s'exécute pas; Si false est renvoyé après l'exécution d'un (), b () est exécuté et la valeur de b () est renvoyée;
&& priorité est supérieure à ||
Le code est le suivant
alert ((1 && 3 || 0) && 4); // Résultat 4 ①
alert (1 && 3 || 0 && 4); // Résultat 3 ②
alert (0 && 3 || 1 && 4); // Résultat 4 ③
analyser
Instruction ①: 1 && 3 return 3 => 3 || 0 retour 3 => 3 && 4 return 4
Instruction ②: Exécutez d'abord 1 && 3 et retournez 3, puis exécutez 0 && 4 et renvoyez 0, et finissez enfin la comparaison des résultats 3 || 0 et renvoyez 3
Instruction ③: Exécutez d'abord 0 && 3 et renvoyez 0, puis exécutez 1 && 4 et renvoyez 4, et enfin exécutez la comparaison des résultats 0 || 4 et renvoyez 4
Remarque: les entiers qui ne sont pas nuls sont vrais, non définis, nuls et vides les chaînes sont fausses.