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 :

Test d'une fonction qui retourne un booléen


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Points : 191
    Points
    191
    Par défaut Test d'une fonction qui retourne un booléen
    Bonjour

    J'ai développé machin une fonction qui retourne "true" ou "false" selon les cas.

    Pour son utilisation, si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (!machin('1')) { ....}
    cela fonctionne (au sens où le code sous condition est exécuté) sur mon poste et sur d'autres, mais bizarrement pas sur d'autres postes dans mon entreprise, qui ont pourtant la meme verson d'IE et de FX que moi, cad que la condition négative n'est jamais levée alors qu'elle devrait l'être.

    J'ai résolu le problème en écrivant différemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( false==machin('1') ) { ... }
    et ce code fonctionne partout, mais j'aimerais quand même comprendre pourquoi la 1ère version n'est pas fiable.

    Merci

  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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    il eut été de meilleur aloi de nous montrer la fonction qui retourne le true ou le false ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Points : 191
    Points
    191
    Par défaut
    Soite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    function getDateFR(strDate)
    {	  
     day = strDate.substring(0,2);
     month = strDate.substring(3,5);
     year = strDate.substring(6,10);
     return(new Date(month+"/"+day+"/"+year));
    }
     
    // Check_Date() : vérifie les dates saisies manuellement
    function Check_Date(champDate)
    {	  
      if (champDate.value.length<=0) return true;
     
      var ld = new Date;
      var ld_temp = getDateFR(champDate.value);
      if (ld_temp<ld) {
      	alert('Date incorrecte '+champDate.value);
    	return false;
      }
     
      return true;
    }
    (la fonction en question étant bien sûr la 2ème)

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 091
    Points : 44 670
    Points
    44 670
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (champDate.value.length<=0) return true;
    la traduction donne
    SI la longueur de la saisie est INFERIEURE ou EGALE à ZERO on retourne VRAI

    - Pour le inférieure je pense que c'est inutile!
    - en règle générale on retourne false quand la saisie est vide

    ...mais se ne sont que quelques remarques...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Points : 191
    Points
    191
    Par défaut
    Bonjour

    Oui, le "inférieur" était inutile, bon ...

    Dans le cas qui m'occupe, une saisie vide est autorisée donc je retourne true.

    Mais cela ne répond pas du tout à ma question, en fait ..

  6. #6
    Membre expérimenté 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 : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par Loko Voir le message
    Bonjour

    J'ai développé machin une fonction qui retourne "true" ou "false" selon les cas.

    Pour son utilisation, si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (!machin('1')) { ....}
    cela fonctionne (au sens où le code sous condition est exécuté) sur mon poste et sur d'autres, mais bizarrement pas sur d'autres postes dans mon entreprise, qui ont pourtant la meme verson d'IE et de FX que moi, cad que la condition négative n'est jamais levée alors qu'elle devrait l'être.

    J'ai résolu le problème en écrivant différemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( false==machin('1') ) { ... }
    et ce code fonctionne partout, mais j'aimerais quand même comprendre pourquoi la 1ère version n'est pas fiable.

    Merci
    Rejeté ! Ton bug n'a aucun sens !

    Peux-tu nous envoyer la page complète (si elle n'a rien de confidentiel ) ? car le bug se situe sans doute encore ailleurs. (je ne vois que ça.)

    Sinon peux tu nous confirmer que chez tes collègues ça affiche bien le "alert('Date incorrecte '+champDate.value);" mais pas la première instruction qui suit la condition (par exemple en y plaçant un alert).

    Par simple curiosité que donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( 1-machin('1') ) { ... }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    f ( !(machin('1')) ) { ... }
    et encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    f ( !false) { ... }
    chez tes collègues ?

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 091
    Points : 44 670
    Points
    44 670
    Par défaut
    perso je ferait une comparaison sur Date().getTime, comparaison qui se ferait sur un number et non un object ld_temp.getTime() < ld.getTime()

Discussions similaires

  1. Créer une fonction qui retourne un booléen
    Par Dereck07 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/02/2008, 23h22
  2. [JUnit] Comment tester une fonction qui retourne un booléen
    Par Raiden1234 dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 15/12/2007, 19h29
  3. DLL:exporter une fonction qui retourne un pointeur
    Par ephemeride dans le forum C++
    Réponses: 2
    Dernier message: 29/09/2006, 11h42
  4. Réponses: 7
    Dernier message: 03/12/2004, 12h40
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

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