En un mot : == convertissez d'abord le type puis comparez, === déterminez d'abord le type, si ce n'est pas le même type, ce sera directement faux.
=== signifie égalité, les deux côtés de la comparaison doivent être absolument identiques
alert(0 == ""); // true alert(0 == false); // true alert("" == false); // true
alert(0 === ""); // false alert(0 === false); // false alert("" === false); // false
Parlons d'abord de ===. C'est relativement simple. Les règles de comparaison spécifiques sont les suivantes :
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].
Quant à ==, les règles de comparaison spécifiques sont les suivantes :
1. Si les deux types de valeur sont identiques, effectuez une comparaison === Les règles de comparaison sont les mêmes que ci-dessus
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 (tableau, etc.) est [pas égale].