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 :

Exécuter une fonction qui est déclarée à l'intérieur d'une autre fonction


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 26
    Par défaut Exécuter une fonction qui est déclarée à l'intérieur d'une autre fonction
    Hello,

    Je suis quasiment débutant avec Vanilla Javascript, avec beaucoup d'efforts j'ai finalement réussi à écrire un morceau de code .

    J'ai juste encore un petit soucis pour lequel je ne trouve pas de réponse sur le web, à vrai dire je ne sais même pas si ce que je veux faire est possible.

    Quand j'essaie d'appeler la fonction quitGame() j'obtiens une erreur dans FireBug "Uncaught TypeError: quitGame is not a function at HTMLDocument.<anonymous>"

    Pour plus de clarté voici le code:
    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
    var settings = "blablah";
     
    new Game(settings);
     
    ...
     
    quitGame(settings) // ERROR: "Uncaught TypeError: quitGame is not a function at HTMLDocument.<anonymous>"
     
    var Game = function(settings) { // fonction "parent"
     
    ... 
     
        function quitGame(settings) { // fonction "enfant"
     
            ...
     
        }
     
    }
    Toute aide ou commentaire est bienvenu

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Salut,
    Est-ce que ceci va mieux?

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    const settings = "blablah";
     
    const G=new Game(settings);
    console.log(G.nom)
    console.log(G.quitGame(settings))
     
    function Game(set) {
        this.nom="joueur: " + set;
        this.quitGame=function (set) {
    	this.go=set + " s'en va";
    	return this.go
        }
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 26
    Par défaut
    Merci pour ton exemple, oui il fonctionne bien, cependant dans le contexte de mon code avec des eventListeners j'ai toujours une petite erreur "Uncaught ReferenceError: G is not defined at HTMLDocument. anonymous> "

    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
    document.addEventListener('click', function (event) {
     
                if ( event.target.id == 'playGame' ) {
     
                    const settings = {};  
     
                    settings.ajaxUrl            = "ajax.json";
                    settings.blablah            = "blablah";
     
                    const G = new Game(settings);
     
                } else if ( event.target.id == 'quitGame' ) {
     
                    G.quitGame(settings);
     
                }
     
            }
     
        }, false);
    Ça me surprend que ça ne fonctionne pas car quand l'utilisateur clique sur le bouton "playGame" la constante "G" est pourtant bien définie et devrait rester en mémoire... On dirait que javascript oublie les constantes à chaque nouvel event "click"...

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    G n'est définie que dans la condition if; elle n'existe plus dans la condition else;

    Il faudrait la définir plus haut;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 26
    Par défaut
    Merci pour l'aide Javatwister

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

Discussions similaires

  1. Exécuter une autre application, ça marche mais
    Par koala81 dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 26/07/2019, 18h15
  2. Exécuter un Path qui est dans un fichier
    Par DjuBAK dans le forum Windows
    Réponses: 0
    Dernier message: 19/06/2018, 11h57
  3. Réponses: 1
    Dernier message: 13/05/2010, 16h13
  4. Réponses: 11
    Dernier message: 20/04/2010, 20h20
  5. Réponses: 3
    Dernier message: 09/07/2009, 15h19

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