IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Bizarrerie test comparaison


Sujet :

JavaScript

  1. #1
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut Bizarrerie test comparaison
    Après avoir passé plus de 10 minutes à chercher un bug dans mon code, j'ai trouvé pourquoi j'ai mis tant de temps à le trouver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function ajout_bouton(){
    	[...]
    	(ajout_bouton.caller == H.HeroFrame.prototype.show); // false
    	(H.HeroFrame.prototype.show == ajout_bouton.caller); // true
    comment se fait-il qu'en comparant 2 fonctions (j'ai testé dans des conditions où l'égalité devrait être VRAIE) ça donne vrai dans un cas et faux en intervertissant les membres de gauche et de droite ?


    nb: le bug se produit sous FF3.6 (et p-ê d'autres navigateurs/versions)


    edit:
    J'aurai du mal à vous donner tout le code car il est lié à un jeu par navigateur qui fait près de 100k lignes de codes mais toutes les pistes ou liens de sujets similaires sont les bienvenues, merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    et avec === ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Par défaut
    Je viens de tester ce code dans FF3.6 et je ne reproduit pas ton bug...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function go(){
     
        console.log(go.caller, goroot);
        console.log(go.caller == goroot);
        console.log(goroot == go.caller);
        console.log(go.caller === goroot);
        console.log(goroot === go.caller);
    }
    function goroot(){
     
        go();
    }
    goroot();

  4. #4
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    et avec === ?
    je n'ai pas testé, mais ça ne devrait pas changer grand chose, ça vérifie le type en plus de l’égalité et les deux coté étaient (en principe) de type(of) "function".


    @TheGwy: en fait il s'agit d'un "userscript"(style "greasemonkey") qui modifie(surcharge) qqes fonctions dont "H.HeroFrame.prototype.show" pour lui rajouter un appel à "ajout_bouton".

    c'était juste pour vérifier la fonction appelante mais soit, c'était p-ê un caratère caché qui s'était glissé dans mon code. sinon je ne vois par d'autres explications.

    mais après qqes testes de savoir pourquoi on n'entrait pas dans ma condition, j'ai affiché des alert de tout et quand j'intervertissais les membres du test de comparaison ça me changeait le résultat, donc j'espérais avoir une piste d'explication de cas similaires, mais soit, j'ai résolu le problème en testant l'objet (this) pour éviter ce bug.


    bref, si même TheGwy n'a jamais entendu parler de ce genre de problème, j'abandonne l'idée de trouver une explication et je passe en résolu.


  5. #5
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    et avec === ?
    je viens de récupérer une vieille version de mon script (qui plantait) et ça affiche bien "TRUE" dans tous les cas avec la triple égalité.

    Résultat : je me pose encore plus de questions maintenant. (puisque la triple égalité ne peux pas être vraie si la double ne l'ait pas)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TESTS] Comparaison de tables
    Par Titouf dans le forum Outils
    Réponses: 2
    Dernier message: 09/04/2008, 08h51
  2. [XSLT] Comparaison de XML / test d'existence
    Par gojira dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 23/06/2006, 16h45
  3. Réponses: 7
    Dernier message: 28/05/2006, 13h00
  4. Test de comparaison
    Par Crazy_Gun dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 09/12/2005, 19h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo