Olivier Miakinen <om+news@miakinen.net> wrote:
Parce que le paragraphe 11.9.6 de la norme dit que ça doit être le cas
pour des objets qui ne sont pas de type Undefined, Null, Number, String
ou Boolean, et qui ne sont ni « le même objet » ni « des objets joints »
(au sens du paragraphe 13.1.2). C'est d'ailleurs le principal intérêt de
l'opérateur ===.
pourquoi "intérêt" de l'opérateur, perso ça m'a surpris, mais j'ai
plutôt une formation en maths qu'en info, de là ma difficulté avec ces
opérateurs j'ai tendance à les prendre comme identité...
et puis je ne trouve pas ça "intéressant", pour moi o1 ou o2 ne sont que
des noms d'objets et je raisonne en contenu.
Voir les paragraphes que j'ai cités dans
<http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf>.
dommage qu'ils n'aient pas prévu un système de navigation dans ce
document. (aussi la pagination est fausse)
je lis :
2. If Type(x) is Undefined, return true.
3. If Type(x) is Null, return true.
très surprenant, heureusement dans ma comparaison j'ai supprimé ces cas
là...
de même je ne comprend pas le test : if(p)
enfin, ce que je veux dire, je ne comprend pas le choix qui a été fait
je me suis fait avoir récemment avec un "if(this[p])"
où je voulais tester l'existence de la propriété p pour l'objet this,
pas de pot je suis tombé sur un cas où this[p]=0;
et donc ça m'a retourné faux quand j'escomptais true ;-)
--
Une Bévue