Maison  >  Article  >  interface Web  >  Explication de l'utilisation de l'égalité (==) en JavaScript

Explication de l'utilisation de l'égalité (==) en JavaScript

不言
不言avant
2018-11-20 15:40:232834parcourir

Le contenu de cet article concerne l'explication de l'utilisation de l'égalité (==) en JavaScript. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Quelle est la magie ?

Les projets dont j'ai été responsable récemment impliquent du front-end, j'ai donc essayé d'écrire du js. Lors du traitement de la valeur non nulle d'un champ, j'ai utilisé tagert_value == '' pour porter un jugement, puis une chose très étrange s'est produite. Certains utilisateurs ont signalé que lorsque leur target_value = 0, la vérification de la valeur non nulle a échoué. Lors du débogage du problème, j'ai essayé ce qui suit dans la barre d'état de la console :

> 0 == ''
< true

Il me semble savoir où se situe le problème. . . Je ne comprends pas clairement la logique de jugement de ==, j'ai donc l'intention de trouver la documentation officielle et d'y jeter un œil.

Explication officielle

Égalité (==, !=)

1 Si les types des deux expressions sont différents, essayez de les convertir en chaîne, nombre, ou booléen.

2. NaN n'est égal à rien, y compris lui-même.

3. Un zéro négatif est égal à un zéro positif.

4. .

5. sont considérés comme égaux s'il s'agit de chaînes identiques, numériquement des nombres équivalents, le même objet, des valeurs booléennes identiques, ou (si différents types), ils peuvent être contraints à l'une de ces situations.

6. Toute autre comparaison est considérée comme inégale.

Consultez l'explication officielle de l'égalité et voyez la première. savoir pourquoi le résultat est vrai. Si les types des deux côtés de l'expression sont incohérents, la méthode de comparaison essaiera d'abord de les convertir en chaîne, nombre ou booléen, puis effectuera la comparaison (conditions égales : la même chaîne, des nombres mathématiquement égaux, le même objet, la même valeur booléenne).
En voyant cela, c'est fondamentalement clair. En comparant 0 == '', le type a été modifié en premier. Voyons ensuite qui est converti ?

> Number('')
< 0

> var b= ''
> b.toString()
<'0'

C'est très évident. Lorsque int == string, la chaîne est d'abord convertie en la valeur int correspondante, puis comparée.

Comment l'éviter ?

Ce qui suit introduit fortement === (égalité stricte). À proprement parler, cela semble très puissant. Son nom officiel est Identité (===. !==). Identity a la sensation d’un genre de résolution de crime plein de suspense.
Regardez l'introduction officielle :

Identité (===. !==)
Ces opérateurs se comportent de manière identique aux opérateurs d'égalité sauf qu'aucune conversion de type n'est effectuée et que les types doivent être le même pour être considéré comme égal.

Dans le développement quotidien, s'il n'est pas possible de garantir que les types de variables dans l'expression de comparaison sont cohérents deux fois, il est recommandé d'utiliser Identifier (===) pour comparez s’ils sont égaux. Si les types de variables sont cohérents, vous pouvez directement utiliser Égalité (==) pour comparer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer