OU logique (||)
var résultat = vrai || faux;
Semblable à l'opération ET logique, le OU logique ne renvoie pas nécessairement une valeur booléenne si l'un des opérandes n'est pas une valeur booléenne dans ce cas, il suit les règles suivantes :
;
□ Si le premier opérande est un objet, renvoie le premier opérande.
□ Si le premier opérande est évalué comme faux, le deuxième opérande est renvoyé.
□ Si les deux opérandes sont des objets, renvoie le premier opérande.
□ Si les deux opérandes sont nuls, renvoie null
□ Si les deux ne sont pas définis, renvoyez undéfini.
□ Si les deux sont NaN, renvoyez NaN
La différence entre « === » et « == »
Opérateur d'égalité (==)
L'opérateur d'égalité effectue une conversion implicite sur les valeurs de l'opération avant comparaison :
Si une valeur d'opérande est booléenne, convertissez-la en valeur numérique avant de comparer
Si une valeur d'opération est une chaîne et que l'autre valeur d'opération est une valeur numérique, la chaîne est convertie en valeur numérique via la fonction Number()
Si une valeur d'opération est un objet et l'autre ne l'est pas, la méthode valueOf() de l'objet est appelée et les résultats sont comparés selon les règles précédentes
null et indéfini sont égaux
Si la valeur d'une opération est NaN, la comparaison d'égalité renvoie false
Si les deux valeurs d'opérande sont des objets, comparez si elles pointent vers le même objet. L'opérateur d'égalité renvoie vrai si les deux opérandes pointent vers le même objet, sinon renvoie faux
Sont respectivement expliqués les éléments suivants :
Parlons d’abord de ===, c’est relativement simple. Les règles suivantes sont utilisées pour déterminer si deux valeurssont === égales :
1. Si les types sont différents, [pas égaux]
2. Si les deux sont des valeurs numériques et ont la même valeur, alors [égal] (!Exception) est que si au moins l'un d'eux est NaN, alors [pas égal]. (Pour déterminer si une valeur est NaN, vous ne pouvez utiliser que isNaN() pour déterminer)
3. Si les deux sont des chaînes et que les caractères à chaque position sont identiques, alors [égal] sinon [pas égal].
4. Si les deux valeurs sont vraies ou si les deux sont fausses, alors [égal].
5. Si les deux valeurs font référence au même objet ou à la même fonction, alors [égal] sinon [pas égal].
6. Si les deux valeurs sont nulles ou si les deux ne sont pas définies, alors [égal].
Parlons de ==, selon les règles suivantes :
1. Si les deux types de valeur sont identiques, effectuez une comparaison ===.
2. Si deux types de valeur sont différents, ils peuvent être égaux. Effectuez la conversion et la comparaison de types selon les règles suivantes :
a. Si l'un est nul et l'autre n'est pas défini, alors [égal].
b. Si l'une est une chaîne et l'autre une valeur numérique, convertissez la chaîne en valeur numérique, puis comparez.
c. Si une valeur est vraie, convertissez-la en 1 et comparez ; si une valeur est fausse, convertissez-la en 0 et comparez.
d. Si l'un est un objet et l'autre une valeur numérique ou une chaîne, convertissez l'objet en une valeur du type de base, puis comparez. L'objet est converti en type de base à l'aide de sa méthode toString ou valueOf. Les classes intégrées de base de JS essaieront valueOf avant toString ; l'exception est Date, qui utilise la conversion toString. Objets de base non-js, Ling Shuo (c'est plus gênant, je ne comprends pas très bien)
e. Toute autre combinaison est [pas égale].
valeur d'expression valeur d'expression
null==non défini vrai vrai==1 vrai
"NaN" ==NaN faux $null==0 faux
false==0 vrai NaN!=NaN vrai
En bref, "==" ne nécessite que des valeurs égales. "===" nécessite que la valeur et le type soient égaux.
Les informations proviennent d'une programmation avancée javascript, organisée et mise à jour ultérieurement