mars 10, 2021

== vs === Pourquoi tout n’est pas égal (et moins dans JavaScript)

Si vous l’avez déjà remarqué, tous les opérateurs égaux ne sont pas égaux en JavaScript;). En particulier, je parle de == (double égal) et === (triple égal). En fait, bien que l’apparence, ils font des choses similaires, dans de nombreux cas, ils se comportent complètement différemment. La bonne gestion de ces deux opérateurs est essentielle pour un bon développement et ne pas incorporer des erreurs non désirées. Mais hé, voyons ce que tout cela est!

double égal (==)

Lorsque dans notre code, nous souhaitons comparer deux variables, nous pouvons utiliser cet opérateur pour vérifier que celles-ci Deux variables sont égales, mais … méfiez-vous! Parce que si les deux variables que nous voulons comparer sont de types différents, le comportement de notre code peut devenir « bizarre ».

Comprendre un peu mieux l’explication , corrige mon poste de dactylographie dynamique.

Comme vous le saurez (au moins après la lecture du post de dactylographie dynamique), JavaScript est dactylographique dactylographique et conduit à la coercition du moteur pour transformer une variable d’un type à un autre. . De nombreuses fois que la transformation n’est pas ce que nous attendons, je peux beaucoup ressembler lors de l’utilisation de l’opérateur « == ».

Fondamentalement, l’opérateur == ce qu’il fait est comparer 2 valeurs mais elle fait sans Vérification du type des variables.

double opérateur égal (==): comparer 2 valeurs mais il le fait sans vérifier le type de variables

avec cela, je veux dire ce qui suit: Si par exemple, j’ai une variable numérique et qui vaut 1 et j’ai une variable de chaîne qui vaut « 1 », par rapport à cet opérateur , la réponse donnera vrai:

var a = 1;var b = '1'if (a == b) { console.log('son iguales')} else { console.log('son diferentes')}

Cette impression à l’écran « sont les mêmes », oui, exactement, même si elles sont des types différents; Comme JavaScript convertit les deux variables vers le même type à l’aide de la coercition, ces deux variables finissent par être identiques.

coercition: convertir la valeur d’une variable d’un type à un autre, car Exemple Conversion de la valeur ‘1’ (type de chaîne) en numérique, il entraînerait la valeur 1 (de type numérique)

mais que se passe-t-il si nous comparons la fausse valeur avec le nombre zéro?

var a = false;var b = 0;if (a == b) { console.log('son iguales')} else { console.log('son diferentes')}

Ceci est également imprimé sur l’écran « sont les mêmes ». Et pourquoi? Parce que lorsque JavaScript convertit 0 (zéro) sur booléen, pour le moteur JavaScript, 0 (zéro), il devient faux, il se demande si faux est égal à faux et que la condition renvoie une véritable impression à l’écran « sont égales ».

est une autre cas, montrant les éléments suivants à l’écran?

var a = '';var b = 0;if (a == b) { console.log('son iguales')} else { console.log('son diferentes')}

Ceci est aussi identique « Beaucoup 0 et la chaîne vide » sont très différent, car, à la variable « A » dont la valeur est une chaîne vide, lors de la conversion de la valeur numérique, ceci est égal à 0 (zéro).

et comment puis-je faire quand je veux Comparez en prenant en compte également le type de variable?

vous surdoué!, En utilisant le même opérateur triple (===)

triple égal (===)

Dans des comptes récapitulatifs, le triple vérifie également le contenu de la variable et vérifie également que les deux variables sont du même type. C’est pourquoi il est dit qu’il est plus sûr que le == (double égal).

opérateur triple égal (===): Vérifiez le contenu du VARI et aussi, vérifiez que les deux variables sont du même type.

retourner à l’exemple précédent:

Dans ce cas, comme « A » et « B » ne sont pas du même type, il est imprimé sur la console « sont différents ».

avec l’exemple:

var a = false;var b = 0;if (a === b) { console.log('son iguales')} else { console.log('son diferentes')}

est également affiché dans la console « est différent » car « A » du type booléen et « B » du type numérique sont un type différent.

enfin :

var a = '';var b = 0;if (a === b) { console.log('son iguales')} else { console.log('son diferentes')}

Comme vous pouvez supposer, il imprime également dans la console « sont différents ».

Conclusion

Comme vous pouvez le constater, il y a une grande différence entre l’utilisation de == et ===, votre mauvaise utilisation peut en fait conduire à des bugs indésirables. Par conséquent, tout le doute, utilisez toujours === et vous économiserez plus d’un mal de tête.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *