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 :

[POO] Bug sur une fonction récursive : renvoit undefined


Sujet :

JavaScript

  1. #1
    Membre habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    Par défaut [POO] Bug sur une fonction récursive : renvoit undefined
    Bonjour,

    j'ai un bug très bizarre. je recherche une chaine de caractère dans une autre grâce à une fonction récursive. En testant cette fonction récursive avec firbug, on voit que cette fonction marche : quand on arrive au return, la valeur qui va être retourné est la bonne. Mais la variable qui est initialisée avec cette valeur reste à undefined !! Je comprends rien.

    voici mon code :
    la fonction récursive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var Find_ref = function(ID, fin){
    		var char_fin = ID.substring(fin, fin+1); 
    		if(char_fin == '|'){
    			var reference = ID.substring(13,fin);
    			return reference;
    		}
    		else{
    			Find_ref(ID, fin+1);
    		}
    	}
    et l'endroit où elle est appelée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    this.Valider = function(val){
    		var ID = val.getId();
    		var ref_fiche = null;
    		ref_fiche = Find_ref(ID, 13);
    		alert(ref_fiche);
    	}
    "ref_fiche" reste toujours à undefined alors que dans firebug, on voit que la variable "ref" de la fonction fonction Find_ref à bien la valeur qu'elle doit avoir (une chaine de caractère).

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Pourquoi tu fais pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var Find_ref = function(ID){
    		var reference = ID.substring(13,indexOf('|'));
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Pourquoi tu fais pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var Find_ref = function(ID){
    		var reference = ID.substring(13,indexOf('|'));
    }

    et ??? ici tu ne récupère rien tu es dans un objet , il te faut sois un return , sois utiliser une variable de l'objet ...

    sinon zaboug , je crois tout simplement, que ta méthode perd l'instance que tu appel explication :

    var a = retour de B()

    B() s'exécute , mais se réappel sans rien renvoyer une première fois
    B() s'exécute donc nouvelle instance ! trouve le résultat, le renvois mais a quoi ?

    il te fau utiliser une variable propre a ton objet pour stocker le résultat je pense
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  4. #4
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    je dirais plutot un return sur le FindRef du else...

  5. #5
    Membre habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    Par défaut
    Merci pour toutes vos réponses.

    Finalement, pas besoin de récursion ici (à croire que je marchais en mode "pourquoi faire simple quand on peut faire compliqué?"), j'ai utilisé la suggestion de Bovino.

    Le code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var Find_ref = function(ID, debut){
    		var reference = ID.substring(debut,ID.indexOf('|'));
    		return reference;
    	}
    y'a limite même pas besoin d'une fonction pour faire ça !

    encore merci à vous.

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

Discussions similaires

  1. Bloqué sur une fonction récursive
    Par InfoMatlab dans le forum Maple
    Réponses: 0
    Dernier message: 19/11/2013, 01h59
  2. problème sur une Fonction récursive
    Par bernie74 dans le forum Développement
    Réponses: 4
    Dernier message: 21/11/2011, 12h45
  3. [Dates] Undefined variable sur une fonction
    Par jiojioforever dans le forum Langage
    Réponses: 4
    Dernier message: 23/03/2007, 11h06
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. PerlDoc sur une fonction d'un module
    Par lesouriciergris dans le forum Modules
    Réponses: 2
    Dernier message: 13/03/2003, 20h50

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