Quel opérateur d'égalité (== vs. ===) doit être utilisé dans les comparaisons JavaScript ?
P粉023650014
2023-08-23 12:29:52
<p>J'utilise JSLint pour explorer JavaScript et il renvoie de nombreuses suggestions pour remplacer <code>==</code> (deux signes égaux) par <code>===</code> signes égaux) lors de l'exécution d'opérations telles que la comparaison de <code>idSele_UNVEHtype.value.length == 0</code> dans une instruction <code>if</code> </p>
<p>Le remplacement de <code>==</code> par <code>===</code> présente-t-il un avantage en termes de performances ? </p>
<p>Toute amélioration des performances serait la bienvenue car il existe de nombreux opérateurs de comparaison. </p>
<p>Y aura-t-il un gain de performances par rapport à <code>==</code> sans conversion de type ? </p>
Utilisez l'opérateur
==
(Equal)Utilisez l'opérateur
===
(Identité)C'est parce que l'opérateur d'égalité
==
effectue un cast de type, ce qui signifie que l'interpréteur essaiera implicitement de convertir la valeur avant de comparer.D'un autre côté, l'opérateur identity
===
ne fait pas de coercition de type, donc les valeurs ne sont pas converties lors de la comparaison.L'opérateur d'égalité stricte (
===
) 的行为与抽象相等运算符 (==
) est le même, sauf qu'aucune conversion de type n'est effectuée et que les types doivent être les mêmes pour être considérés comme égaux.Référence : Tutoriel JavaScript : Opérateurs de comparaison
==
运算符将在进行任何必要的类型转换后比较是否相等。===
运算符不会进行转换,因此如果两个值不是同一类型,===
将简单地返回假
. Les deux sont tout aussi rapides.Citation du grand JavaScript: The Good Parts一个> de Douglas Crockford,
Mise à jour
@Casebash dans les commentaires et @Phillipe Laybaert réponse sur les objets. Pour les objets,
==
和===
se comportent de manière cohérente les uns par rapport aux autres (sauf cas particuliers).Le cas particulier est celui où vous comparez une primitive à un objet qui est évalué comme la même primitive en raison de l'objet chaîne créé par son constructeur
toString
或valueOf
方法。例如,考虑将字符串基元与使用String
.Ici
==
运算符检查两个对象的值并返回true
,但是===
看到它们类型不同并返回false
。哪一个是正确的?这实际上取决于您要比较的内容。我的建议是完全绕过这个问题,只是不要使用String
Le constructeur crée un objet chaîne à partir d'une chaîne littérale.Référence
https://262.ecma-international.org/5.1/#sec-11.9.3