Maison  >  Article  >  interface Web  >  La différence entre == et === en js

La différence entre == et === en js

PHPz
PHPzoriginal
2017-04-02 16:38:331008parcourir

1. Pour les types de base tels que chaîne et nombre, il existe une différence entre == et ===

1) Comparaison entre différents types, la comparaison de == est converti en la même "Valeur" après le type pour voir si les "valeurs" sont égales, ===Si les types sont différents, les résultats seront inégaux

2) Comparez le même type, comparez directement le "value", le résultat des deux sera le même

2 Pour les types avancés tels que Array et Object, il n'y a pas de différence entre == et ===

.

Comparez les "adresses de pointeur"

3. Il existe une différence entre les types de base et les types avancés, == et ===

1) Pour == , convertissez les types avancés en types de base et effectuez une comparaison de "valeurs"

2) Parce que les types sont différents, le résultat === est faux

Parfois, vous verrez que trois signes égaux (= ==) sont utilisés pour juger si deux objets sont égaux, ce qui équivaut à deux signes égaux. Quelle est la différence entre les nombres (==) ? Pour faire simple, lors de l'utilisation de "==", si les types des deux côtés sont différents, le moteur js les convertira dans le même type puis les comparera, tandis que "===" n'effectuera pas de conversion de type, donc quand les deux côtés n’appartiennent pas au même Type, certainement pas égaux. Par exemple :

var a = 0, b = '0';

alert((a == b) + '--' + (a === b))

Le résultat que vous voyez à ce moment est « vrai-faux ».

=== Règles de jugement

  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 [equal]; (!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 les mêmes, alors [égal] ; Sinon [pas égal].

  4. Si les deux valeurs sont vraies, ou si les deux sont fausses, alors [égal].

  5. Si deux valeurs font référence au même objet ou fonction, alors [égal] sinon [pas égal].

  6. Si les deux valeurs sont nulles, ou si les deux ne sont pas définies, alors [égal].

== Règle de jugement :

  1. Si les deux types de valeur sont identiques, effectuez une comparaison ===.

  2. Si deux valeurs sont de types différents, elles peuvent être égales. Effectuez une conversion de type puis comparez selon les règles suivantes :

  • Si l'un est nul et l'autre indéfini, alors [égal].

  • Si l'une est une chaîne et l'autre est une valeur numérique, convertissez la chaîne en une valeur numérique, puis comparez.

  • Si une valeur est vraie, convertissez-la en 1 et comparez ; si une valeur est fausse, convertissez-la en 0 et comparez.

  • Si l'un est un objet et l'autre est 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. Pour les objets de base non-js, toute autre combinaison de

  • est [pas égal].

Une attention particulière doit être portée à la conversion du vrai et du faux, par exemple :

alert(true == 1);  //ture
alert(true == 2); //false, true会转换成number,也就是1,当然 1 不等于 2
//可以使用 !! 来把一个数据类型转换为boolean型
alert(true == !!2) //true,!2 === false !(!=2) = !false = true

De plus, en js, si une variable est utilisée dans une opération logique, alors Lorsqu'une variable n'a pas de valeur initiale ou que sa valeur est 0, -0, null, "", false, undefined ou NaN, sa valeur est fausse. Sinon, sa valeur est vraie.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn