En JavaScript, les opérateurs == et === peuvent être utilisés pour déterminer si deux valeurs sont égales ; la différence est que si les deux types de valeur sont incohérents, l'opérateur === renverra directement false, while L'opérateur == sera jugé après la conversion de type. Les règles détaillées de jugement sont les suivantes :
=== Règles de jugement pour les opérateurs
1. Si les types des deux valeurs sont incohérents, renvoyez false.
2. Si les deux valeurs ont le même type et la même valeur, retournez true. NaN est un cas particulier, NaN===NaN renvoie false.
3. Si les deux valeurs sont toutes deux de type objet, alors tout comme Java, à moins que les deux références ne soient cohérentes (la référence pointe vers la même adresse d'objet), même si le contenu de l'objet est exactement le même, le deux valeurs sont considérées comme incohérentes et les opérations correspondantes effectuées renverront faux. Par exemple, si vous créez deux nouveaux tableaux avec exactement le même contenu et effectuez l'opération === sur eux, le résultat renvoyé est faux - bien que leur contenu soit exactement le même, ils appartiennent toujours à deux objets différents.
4.0===-0 renvoie vrai.
==Règles de jugement pour les opérateurs
L'opérateur== convertira le type de la valeur avant la comparaison. La conversion de type suit les principes suivants : il est d'abord converti en nombre avant la comparaison, et l'objet Date est d'abord converti en chaîne avant la comparaison. Les règles spécifiques de jugement sont les suivantes :
1. Si les deux types de valeur sont cohérents, effectuez l'opération === et revenez.
2.null==indéfini est vrai.
3. true sera converti en 1 avant comparaison, false sera converti en 0 avant comparaison.
4. Si l'une des valeurs est un objet, convertissez-la en nombre avant comparaison, sauf pour les objets Date.
5. Si l'une des valeurs est un objet Date, convertissez-la en chaîne avant la comparaison.
Expérimenter
console.log("3" == 3);//true
console.log(null == non défini);//true
console.log(true == 1);//true
console.log(true == 9);//false
console.log([9] == 9);//true
console.log([9] == "9");//true
var d = nouvelle Date();
var s = d.toString();
var n = d.valueOf();
console.log(d == s);//true
console.log(d == n);//false