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 :

Démarrer setInterval() à partir d'une fonction et le stopper dans une autre, impossible ?


Sujet :

JavaScript

  1. #21
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par psychadelic Voir le message
    ben non, en JS et parce que dans ce langage les fonctions sont des objets, elles restent des objets tant qu'ils ne sont pas utilisés, ce qui en langage informatique s'appelle une instanciation.
    Une fonction est un objet Fonction. Objet ou instance c'est pareil ici : Fonction est un constructeur, pour faire simple on pourrait faire le lien avec une class et dire qu'une fonction est une instance de Fonction...

    Exemple : var sum = new Function('a', 'b', 'return a + b');...

    Citation Envoyé par psychadelic Voir le message
    si on appelle 3 fois la même fonction en JavaScript, on l'interpréteur réalise 3 instances différentes du même objet,
    Non je ne pense pas, il n'y aura qu'une instance...

    C'est comme les autres objets que tu construis avec tel ou tel constructeur...

    Citation Envoyé par psychadelic Voir le message
    ce ne sont pas 3 exécutions de la même fonction avec des paramètres différent.
    Ben si justement et heureusement c'est un des intérêts des fonctions justement : on n'a qu'un seul ensemble d'instructions qu'on peut exécuter plusieurs fois...

    Citation Envoyé par psychadelic Voir le message
    ça n'a rien à voir avec une variable, qui elle peut changer de valeur à tout moment et accessible selon la portée qu'on lui a donné.
    Ben il y a aussi des constantes (const) que l'on ne peut pas modifier et en plus on peut stocker la référence à une fonction dans une variable...

  2. #22
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Les références que tu donnes proviennent d'une traduction aproximative.
    la page en Anglais spécifie bien
    Defining the function simply names the function and specifies what to do when the function is called.
    et plus loin
    The scope of a function is the function in which it is declared, or the entire program if it is declared at the top level.
    cela indique juste que l'intansciation d'une fonction dépend de l'endroit ou on l'a déclaré, mais indique clairement qu'une fonction juste déclarée n'existe pas tant qu'elle n'est pas appelée

  3. #23
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par psychadelic Voir le message
    C'est quasiment le même code dans les 2 cas, j'ai juste changé les paramêtres en entrée
    Oui c'est vrai...

    Citation Envoyé par psychadelic Voir le message

    si ce sont 2 appels de la même fonction, comment expliques tu que la variable noOccurence inclue dans la cette unique fonction puisse afficher 2 valeurs différentes sur chacun des interfaces ?
    Ben en fait c'est parce que c'est une variable locale, à chaque appelle de la fonction tu auras une variable noOccurence différente même si c'est le même nom...


    Citation Envoyé par psychadelic Voir le message
    ou comment expliques tu que les 2 boutons Start et Pause puissent continuer à être activables sans interférer entre les 2 interfaces ?
    Ce sont des boutons différents : chacun a sa propre balise HTML et ses propres gestionnaires d’évènements...

  4. #24
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Ben en fait c'est parce que c'est une variable locale, à chaque appelle de la fonction tu auras une variable noOccurence différente même si c'est le même nom...
    oui justement, dans 2 instances différentes de l'objet GestionInterface, et ce qui prouve bien que cette "fonction" est multipliée dans la mémoire du système

    Citation Envoyé par Beginner. Voir le message
    Ben si justement et heureusement c'est un des intérêts des fonctions justement : on n'a qu'un seul ensemble d'instructions qu'on peut exécuter plusieurs fois...
    drole d'interprétation de la logique de codding !

    l’intérêt des fonctions c'est effectivement qu'on les écrits qu'une seule fois pour autant d'exécutions qu'on souhaite, mais cela ne signifie pas pour autant qu'elles n'existent qu'en un seul exemplaire dans la mémoire du système hôte (en fait l'optimisation de code duplique juste leur partie data, et éventuellement les partie code si les duplicatas fonctionnent en concurrence, ce qui peut souvent arriver en JS)


    Citation Envoyé par Beginner. Voir le message
    Ben il y a aussi des constantes (const) que l'on ne peut pas modifier et en plus on peut stocker la référence à une fonction dans une variable...
    c'est une autre histoire, et on peut aussi figer les variables en JS pour les rendre non modifiables

  5. #25
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par psychadelic Voir le message
    Les références que tu donnes proviennent d'une traduction aproximative.
    la page en Anglais spécifie bien
    Defining the function simply names the function and specifies what to do when the function is called.
    et plus loin
    The scope of a function is the function in which it is declared, or the entire program if it is declared at the top level.

    cela indique juste que l'intansciation d'une fonction dépend de l'endroit ou on l'a déclaré, mais indique clairement qu'une fonction juste déclarée n'existe pas tant qu'elle n'est pas appelée
    Ben la traduction : "La portée d'une fonction est la fonction dans laquelle elle est déclarée ou le programme entier si elle est déclarée au niveau le plus haut. " est bonne...

    Si une fonction est déclarée à l'intérieur d'une autre, sa portée c'est la fonction dans laquelle elle est déclarée...
    Sinon (c'est-à-dire si elle est déclarée en dehors de toute fonction) sa portée c'est le programme tout entier.

    Pour moi c'est comme pour les variables...

    Citation Envoyé par psychadelic Voir le message
    oui justement, dans 2 instances différentes de l'objet GestionInterface, et ce qui prouve bien que cette "fonction" est multipliée dans la mémoire du système
    pour moi (je sais je me répète) il n'y a qu'une instance et deux exécutions...

    Tu connais l’intérêt du prototype, cela permet d'éviter qu'une "fonction" soit multipliée dans la mémoire du système, non ?

    Cela me rappelle ce fil : Demande d'explication sur les prototypes

    Et cette réponse par exemple (notamment le passage en rouge) :

    Citation Envoyé par SylvainPV Voir le message
    Déclaré dans le constructeur, ça devient une propriété de l'objet. Donc pour 10 machines, il y aura 10 fonctions M_methode différentes, qui seront tout à fait équivalentes mais pourtant bien distinctes. Un peu comme le nombre de pièces, tu peux avoir deux machines avec 40 pièces mais ce nombre est pourtant bien spécifique à chaque machine (si tu ajoutes 10 pièces à la première, la seconde aura toujours 40 pièces)

    Déclaré dans le prototype, ça devient une propriété du prototype, donc une propriété partagée par toutes les instances. Donc ce sera la même fonction partout. On peut mettre ce qu'on veut dans le prototype, pas forcément une fonction. Par exemple un chiffre, le prix de la machine:

    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
     
    function Machine(nbPieces){
       this.nbPieces = nbPieces;
    }
    Machine.prototype.prix = 100;
     
    var machine1 = new Machine(40), 
         machine2 = new Machine(40);
     
    console.log(machine1.prix, machine2.prix); // 100, 100
     
    Machine.prototype.prix = 120;
     
    console.log(machine1.prix, machine2.prix); // 120, 120
     
    machine1.prix = 150; // prix devient une propriété de l'objet machine1 et non plus du prototype
     
    console.log(machine1.prix, machine2.prix); // 150, 120



    #2

  6. #26
    Membre très actif

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Par défaut
    Salut,

    C'est très interessant cette discussion

    C'est pas de mon niveau, mais je comprend que il y a débat sur : Si une fonction est située en un seul endroit de la mémoire ou en deux endroits ?
    C'est ça ?

    Parce que si c'est ça, en étant logique, si nous on a besoin du service d'une fonction, le microprocesseur va peut-être faire une copie de la fonction, histoire de pas changer ses valeurs d'origine à cause de notre utilisation, et alors il va se servir de la copie, enfin je crois que ça devrait etre comme ça, parce que nous si quelqu'un nous demande de lui prêter un truc on a forcément un peu la peur s'il va le perdre ou l'abimer non ? Bon le probleme avec cet exemple c'est que dans la vie on peut pas facilement copier notre objet pour prêter la copie, à part pour des clefs d'appartement ou de boites aux lettres, des trucs comme ça, mais l'ordi lui ces des données dans la mémoire alors il peut facilement faire des copies et pas autoriser qu'on touche à l'original, ça doit etre ça le fonctionnement peut-être.

    ça serait bien pour que j'apprenne que on mette ce débat dans un post pour que les autres le voient et qu'on aie des réponses différentes, c'est cool comme question

  7. #27
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Pour moi c'est comme pour les variables...
    /../
    pour moi (je sais je me répète) il n'y a qu'une instance et deux exécutions...
    /../
    Tu connais l’intérêt du prototype, cela permet d'éviter qu'une "fonction" soit multipliée dans la mémoire du système, non ?
    Bon, dernière tentative,

    1) Pour moi c'est comme pour les variables...

    si tu veux comparer les objets avec quelque chose, serait plutôt les types, soit :
    quand on déclare un objet (ou une fonction-objet) c'est un peu comme si on déclarait directement un nouveau type d'éléments.

    et les types d'éléments comme les Number, ou string, ou array n'ont que faire de la notion de portée.
    d'ailleurs Javascript fournit d'autres objets directement comme l'objet Math

    Donc dire que le type Number ou le type String, ou même l'objet Math ont une portée n'ont aucun sens.

    si la déclaration d'un nouveau type est faite au niveau zéro d'un programme et qu'une variable utilisant ce type est crée dans un niveau 15, la portée de cette variable est bien au niveau 15 et non au niveau zéro de la déclaration de son type.
    et c'est pareil avec les variables crées à partir d'un objet.


    2) pour moi (je sais je me répète) il n'y a qu'une instance et deux exécutions...

    non, il y a deux instances, et dans chacune de ses instances il y une variable noOccurence ayant la valeur courante affichées chacune sur leur interface correspondant.

    Est-ce que tu à essayé de faire tourner mon 2em exemple ? ( https://www.developpez.net/forums/d2.../#post11209585 )
    appuyé sur les diffrents Start / Pause de chacun des interface, et visualisé que les valeurs affichées évoluent indifféremment l'une de l'autre ?
    à part le fait qu'elles évoluent chacune dans un espace mémoire différent, ton idée d'un unique espace mémoire pour les deux est irréaliste.

    ou alors si tu a une solution pour qu'une variable interne puisse changer de valeur sur 2 interfaces différents sans être dupliquée en mémoire, faudrait le breveter parce que ça rapporterai des milliards.


    3)Tu connais l’intérêt du prototype, cela permet d'éviter qu'une "fonction" soit multipliée dans la mémoire du système, non ?

    Justement un prototype par nature c'est un peu comme un maquette taille réelle et quasi opérationnelle qui est rangée dans l’atelier et qui sert de référence pour en réaliser des copies utilisables.
    Donc oui, on parle de multiplication dans la mémoire du système.

    au passage tu remarquera que le mot prototype est formé par : https://www.cnrtl.fr/definition/prototype
    -proto- : premier
    -type- : comme type de variable (String / Number, ....) comme je l'explique au premier point.

    ---
    Il y a la documentation et il y a la réalité
    - La documentation est réalisée par des rédacteurs techniques (voir par les codeurs eux-même) mais cela reste du texte sujet à interprétation.
    - la réalité, c'est le code, j'ai cru lire que les interpréteur JS sont écrit en C. cela veut dire que derrière la déclaration d'une fonction, puis dans sont utilisation,
    il y a un morceau de code en C natif qui en fait la préparation.
    pour les interpréteurs JS, pas besoin de rechercher les codes sources tu l'a toi même écrit,
    la techno Objet est basé sur la technique des prototypes, qui est justement une technique de duplication en mémoire.

  8. #28
    Membre très actif

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Par défaut
    En fait y en a un qui dit que dans la mémoire y a deux fonctions équivalentes mais séparées, chacune avec ses valeurs de variables,
    et l'autre qui dit que y a une seule fonction mais aussi sa copie qui a ses propres valeurs de variables.

    je dis l'un et l'autre parce que j'arrive pas à voir qui dit : "deux instances" et qui dit une instance et sa copié, surtout que d'aprés ce que j'ai lu sur le net, une instance c'est déjà une sorte de copie, sauf que on peut modifier ses variables sans que sa modifie l'originale.
    Moi je comprend pas où est la différence entre ces deux avis, parce que dans la mémoire s'il y a deux fonctions du même nom mais avec des valeurs différentes, ça fait deux emplacements de mémoire, ça revient au même je crois non ?
    (ouais j'essaie de suivre et comprendre, lol, pas facile)

  9. #29
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Citation Envoyé par psychadelic Voir le message
    Bon, dernière tentative,
    Ben c'est une discussion et il est vrai qu'on a des avis différents mais justement cela peut être instructif de connaitre les différents avis pour se faire sa propre opinion...

    Bon désolé si je t'ai pris la tête, merci de ta patience...

    Citation Envoyé par psychadelic Voir le message
    si tu veux comparer les objets avec quelque chose, serait plutôt les types,...
    Je ne cherche pas à comparer les objets à quelque chose...

    Je pensais avoir été clair mais bon je vais essayé de résumer :

    1 - A un moment de la discussion j'ai parlé de "fonction globale" et tu n'étais pas d'accord apparemment, pour toi seules les variables peuvent être globales...

    Alors c'est là que j'ai expliqué ce que j'entendais par "fonction globale" et j'ai fait une analogie avec les variables :

    Locale ou globale qu'est-ce que cela signifie finalement ? Pourquoi fait-on cette distinction ? Eh bien pour moi, c'est une question de portée (d'accessibilité) et de ce point de vue-là cela concerne aussi les fonctions...

    En effet on voit bien (on peut le tester si besoin est pour s'en convaincre) qu'une fonction a une portée (accessibilité) et que celle-ci dépend de l'endroit où elle est déclarée :

    1- Si une fonction est déclarée à l'intérieur d'une autre, sa portée c'est la fonction dans laquelle elle est déclarée...
    2- Sinon (c'est-à-dire si elle est déclarée en dehors de toute fonction) sa portée c'est le programme tout entier.

    et par analogie avec la portée des variables et/ou par commodité on peut parler de fonction locale ou interne ou enfant pour le cas 1 et de fonction globale, externe ou parent pour le cas 2.

    Peut-être ce serait mieux de parler de "fonction à portée globale" ?

    C'est juste une question de terminologie...

    2 - Un autre point commun avec les variables :

    Les fonctions globales (déclarées en dehors de toute fonction) sont des propriétés de l'objet window tout comme les variables globales...

    Une fonction définie en dehors de toute fonction sera accessible dans tout le programme comme peut l'être une variable globale...

    Citation Envoyé par psychadelic Voir le message
    et les types d'éléments comme les Number, ou string, ou array n'ont que faire de la notion de portée.
    ...
    Donc dire que le type Number ou le type String, ou même l'objet Math ont une portée n'ont aucun sens.
    Ok mais pour ce qui de la portée je parlais des fonctions comme résumé ci-dessus...




    Citation Envoyé par psychadelic Voir le message
    non, il y a deux instances, et dans chacune de ses instances il y une variable noOccurence ayant la valeur courante affichées chacune sur leur interface correspondant.
    Ben j'avais déjà répondu à ça : "Ben en fait c'est parce que c'est une variable locale, à chaque appelle de la fonction tu auras une variable noOccurence différente même si c'est le même nom..."

    C'est une question compliquée à vérifier car JS n'est pas un langage compilé... Mais j'ai cru comprendre qu'à chaque exécution de la fonction l’interpréteur "crée" un nouveau contexte d’exécution et chaque contexte d’exécution a son propre "Call Object" dans lequel sont définies les variables locales (ces dernières sont des propriétés du "Call Object").

    Cela fait penser à la pile (stack)...


    Citation Envoyé par psychadelic Voir le message
    ou alors si tu a une solution pour qu'une variable interne puisse changer de valeur sur 2 interfaces différents sans être dupliquée en mémoire, faudrait le breveter parce que ça rapporterai des milliards.
    Ben justement il n'y a pas qu'une variable mais deux comme expliqué ci-dessus...


    Citation Envoyé par psychadelic Voir le message
    Est-ce que tu à essayé de faire tourner mon 2em exemple ? ( https://www.developpez.net/forums/d2.../#post11209585 )
    Oui et c'est un joli code !

  10. #30
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par amateurprg Voir le message
    Moi je comprend pas où est la différence entre ces deux avis, parce que dans la mémoire s'il y a deux fonctions du même nom mais avec des valeurs différentes, ça fait deux emplacements de mémoire, ça revient au même je crois non ?
    Pour moi il n'y a qu'une fonction, le nom de la fonction est une référence.

    Le langage JS est langage interprété on ne peut pas vérifier comme on peut le faire par exemple en C\C++...

    Toi qui parlait de microprocesseur ben justement, en assembleur on peut vérifier et on peut très bien avoir une seule fonction en mémoire et des paramètres et des variables locales différents à chaque appel. Ils seront stocker dans la pile ou dans des registres ou...

    une même fonction peut travailler avec des données temporaires (durée de vie limitée) différentes à chaque appel...

  11. #31
    Membre très actif

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Par défaut
    ah tiens, c'est vrai ça, qu'une fonction peut très bien enregistrer deux valeurs différentes en mémoire en utilisant leur adresse, j'avais fait ça en assembleur sur le programme debug (du dos) pour faire un programme de mots de passes pour mon pc.

  12. #32
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par amateurprg Voir le message
    ah tiens, c'est vrai ça, qu'une fonction peut très bien enregistrer deux valeurs différentes en mémoire en utilisant leur adresse, j'avais fait ça en assembleur sur le programme debug (du dos) pour faire un programme de mots de passes pour mon pc.
    Aujourd'hui Arduino a la cote, on pourrait tester un code en C/C++ et regarder le code assembleur produit par le compilateur...

  13. #33
    Membre expérimenté
    Homme Profil pro
    OoW
    Inscrit en
    Juin 2019
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Ukraine

    Informations professionnelles :
    Activité : OoW

    Informations forums :
    Inscription : Juin 2019
    Messages : 144
    Par défaut
    Quand je vois le « rang -> expert confirmé » je me pose deux questions
    • Expert en quoi ?
    • … plus loin


    Citation Envoyé par psychadelic
    Je veux bien reconnaître au passage que le la syntaxe JS est imparfaite et déroutante, mais en langage informatique c’est bel et bien un objet [ou plus exactement un prototype].

    Quant à ta notion de globale, en informatique c’est un adjectif qui ne peut désigner que des variables; cela ne s’applique ni aux fonctions ni aux méthodes [ni aux prototypes]
    En ce qui concerne le vocabulaire, c’est du n’importe quoi euh ! pardon une interprétation très personnelle et erronée de la réalité du JavaScript.


    Citation Envoyé par psychadelic
    si on appelle 3 fois la même fonction en JavaScript, on l'interpréteur réalise 3 instances différentes du même objet,
    ce ne sont pas 3 exécutions de la même fonction avec des paramètres différent.
    si ce sont 2 appels de la même fonction, comment expliques tu que la variable noOccurence inclue dans la cette unique fonction puisse afficher 2 valeurs différentes sur chacun des interfaces ?

    ou comment expliques tu que les 2 boutons Start et Pause puissent continuer à être activables sans interférer entre les 2 interfaces ?
    Visiblement tu n’as pas ou mal compris le fonctionnement interne d’un moteur JavaScript, par exemple as-tu entendu parler du contexte d’exécution ?


    Citation Envoyé par psychadelic
    oui justement, dans 2 instances différentes de l'objet GestionInterface, et ce qui prouve bien que cette "fonction" est multipliée dans la mémoire du système
    Phrase bateau … dans la mémoire du système ne signifie pas grand-chose … environnement lexical, contexte d'exécution et la pile d'exécution …


    Donc oui, on parle de multiplication dans la mémoire du système.

    au passage tu remarquera que le mot prototype est formé par : https://www.cnrtl.fr/definition/prototype
    -proto- : premier
    -type- : comme type de variable (String / Number, ....) comme je l'explique au premier point.
    D’autres ont une définition bien moins étymologique et interprétée que la tienne comme par exemple.


    Citation Envoyé par psychadelic
    Il y a la documentation et il y a la réalité
    - La documentation est réalisée par des rédacteurs techniques (voir par les codeurs eux-même) mais cela reste du texte sujet à interprétation.
    - la réalité, c'est le code, j'ai cru lire que les interpréteur JS sont écrit en C. cela veut dire que derrière la déclaration d'une fonction, puis dans sont utilisation,
    il y a un morceau de code en C natif qui en fait la préparation.
    donc la vérité est chez toi


    Citation Envoyé par psychadelic
    la techno Objet est basé sur la technique des prototypes, qui est justement une technique de duplication en mémoire.



    Pour finir il est vrai qu’en lisant ta signature on peut comprendre tes points de vue.

    J’en suis à me poser la deuxième question, comment developpez attribue le « rang », en l’occurrence donc « expert confirmé », qui apparaît en dessous de nom de l’auteur du post.


    Merci à Beginner pour le lien vers cette autre discussion Demande d'explication sur les prototypes, ce qui rassure sur les compétences présentent sur developpez.

    PS : Bon courage Beginner

  14. #34
    Membre très actif

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Par défaut
    Quand je vois le « rang -> expert confirmé » je me pose deux questions
    Bein te les pose plus, c'est juste un rang de forum à mon avis
    Moi je regarde jamais ça, ce que je regarde c'est les réponses qui sont postées, et des experts c'est vrai qu'il y en a plein sur developpez, beaucoup ont fait des applications connues et utiles (SFML, Lazarus,etc) ou des tutos très bien faits, etc...

  15. #35
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    Salut
    Pour information à Dave Hiock et amateurprg,
    Le grand mode d'emploi du forum, à lire si vous souhaitez tout savoir !
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  16. #36
    Membre très actif

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Par défaut
    Merci progElect je regarde

    Bein voilà, c'est un rang forum qui dépend des points reçu.
    Mais bon, comme on peut recevoir des points sur un post pour un message qui n'est pas de la programmation, le titre donné est pas forcément dû à la programmation.
    Moi je me fie juste aux réponses données, et on voit bien que les pros sont légions ici, d'ailleurs juste en quelques jours j'ai appris plein de choses que j'aurais mis des mois à apprendre ailleurs.

  17. #37
    Membre expérimenté
    Homme Profil pro
    OoW
    Inscrit en
    Juin 2019
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Ukraine

    Informations professionnelles :
    Activité : OoW

    Informations forums :
    Inscription : Juin 2019
    Messages : 144
    Par défaut
    Citation Envoyé par ProgElecT
    Pour information à Dave Hiock et amateurprg
    Merci, c'est une page que je n'avais pas lue lors de mon parcours initiatique.

    Citation Envoyé par amateurprg
    Moi je me fie juste aux réponses données,
    Certes mais dans le cas présent tu penses apprendre des choses de la part « expert confirmé » alors que c'est n'importe quoi, tu me diras comme souvent sur internet, il faut faire le tri.

    Citation Envoyé par amateurprg
    ... et on voit bien que les pros sont légions ici,
    Je te confirme, j'ai lu d'excellentes choses sur ce site, c'est sûrement pour cela que j'y reviens quand j'ai le temps.

    Citation Envoyé par Beginner.
    on ne peut pas vérifier comme on peut le faire par exemple en C\C++...
    On peut voir, plus ou moins, ce qui ce passe en mémoire avec les outils dont dispose les navigateurs.
    Par exemple sous Firefox, il faut ouvrir la console, aller dans l'onglet Mémoire, Capturer un instantané, et dans les filtres, Afficher les Agrégats avec option Regrouper selon: CallStack, et plein d'autres chose encore.
    C'est à peu près la même chose sur Chrome en faisant un snapshot de la head et en filtrant avec Function.

    Je finirais par une autre question, mais je n'attend pas de réponse, en quoi les (points+) attribués à un « expert confirmé » qui raconte n'importe et les (points-) attribués à Beginner. sont-ils légitimes, me concernant je me doute , on n'est pas sur fadebook à moins que ... ?

  18. #38
    Invité
    Invité(e)
    Par défaut
    @Dave Hiock

    Bonjour,
    de ce que j'ai pu voir de tes dernières interventions, tu te contentes de critiquer les autres, sans apporter d'éléments constructifs.
    Ça n'a aucun intérêt.
    Si c'est là ta seule "contribution" à la communauté DVP, c'est dommage (Inscrit en juin 2019 - Messages :15 !)
    Tu as certainement mieux à dire, non ?
    Que tu ne sois pas d'accord avec tel ou tel intervenant est ton droit, mais dans ce cas, alimente le débat avec tes propres arguments.
    Dernière modification par Invité ; 07/11/2019 à 11h59.

  19. #39
    Membre expérimenté
    Homme Profil pro
    OoW
    Inscrit en
    Juin 2019
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Ukraine

    Informations professionnelles :
    Activité : OoW

    Informations forums :
    Inscription : Juin 2019
    Messages : 144
    Par défaut
    Citation Envoyé par jreaux62
    de ce que j'ai pu voir de tes dernières interventions,
    ...
    tu te contentes de critiquer les autres, sans apporter d'éléments constructifs.
    ...
    Que tu ne sois pas d'accord avec tel ou tel intervenant est ton droit, mais dans ce cas, alimente le débat avec tes propres arguments.
    il me semble pourtant en avoir apporté sous la forme.
    par exemple as-tu entendu parler du contexte d’exécution
    ...
    environnement lexical, contexte d'exécution et la pile d'exécution
    Ce sont des bases pourtant à connaitre quand on aborde le sujet, que veux tu que je dise de plus.

    Citation Envoyé par jreaux62
    Si c'est là ta seule "contribution" à la communauté DVP, c'est dommage (Inscrit en juin 2019 - Messages :15 !)
    Ben il faut bien commencer un jour et comme je vois que la plupart de mes quelques interventions ont été « moinsées » je dois admettre que je n'ai pas encore bien saisi le fonctionnement de certains des forums de ce site.

  20. #40
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Voici un exemple qui peut surprendre (comme l'exemple de code de psychadelic) :

    Voici un cas qui pourrait vous surprendre :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var variable = "globale";
    function fonctionParente() {
      var variable = "locale";
      function fonctionFille() {
        print(variable);
      }
      return fonctionFille;
    }
     
    var fille = fonctionParente();
    fille();


    fonctionParente renvoie sa fonction interne et le code en bas de appelle cette fonction. Même si fonctionParente a fini de s’exécuter à ce moment-là, l’environnement local dans lequel variable a la valeur locale existe toujours, et fonctionFille continue de l’utiliser. Ce phénomène s’appelle une fermeture lexicale (ou closure en anglais).

    La portée lexicale permet non seulement de rendre très facile et rapide à discerner dans quelle partie d’un programme une variable sera disponible, mais aussi de « synthétiser » des fonctions. En utilisant certaines des variables venant d’une fonction l’englobant, une fonction interne peut être amenée à faire des choses différentes. Imaginez que nous ayons besoin de plusieurs fonctions différentes mais similaires, l’une d’entre elles ajoutant 2 à son argument, l’autre ajoutant 5 et ainsi de suite.

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function creerFonctionAjouter(quantite) {
      function ajouter(nombre) {
        return nombre + quantite;
      }
      return ajouter;
    }
     
    var ajouterDeux = creerFonctionAjouter(2);
    var ajouterCinq = creerFonctionAjouter(5);
    show(ajouterDeux(1) + ajouterCinq(1));

    Pour bien comprendre, vous ne devez pas considérer que les fonctions empaquettent seulement des calculs, mais aussi un environnement. Les fonctions globales s’exécutent simplement dans l’environnement global, c’est assez évident. Mais une fonction définie à l’intérieur d’une autre fonction conserve l’accès à l’environnement existant dans cette fonction à l’instant où elle a été définie.

    Par conséquent, la fonction ajouter de l’exemple au-dessus, qui est créée lorsque creerFonctionAjouter est appelée, capture un environnement dans lequel quantite a une certaine valeur. Il empaquette cet environnement avec le calcul return nombre + quantite à l’intérieur d’une valeur qui est alors retournée depuis la fonction extérieure.

    Lorsque cette fonction renvoyée (ajouterDeux ou ajouterCinq) est appelée, un nouvel environnement ― dans lequel la variable nombre a une valeur ― est créé comme un sous-environnement de l’environnement capturé (dans lequel quantite a une valeur). Ces deux valeurs sont ajoutées, et le résultat est renvoyé.

    Au-delà du fait que différentes fonctions peuvent contenir des variables de même nom sans qu’elles ne se mélangent...
    Source : https://fr.eloquentjavascript.net/chapter3.html
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [Lazarus] Création d'une fiche à partir d'une autre impossible
    Par Jon Shannow dans le forum Lazarus
    Réponses: 3
    Dernier message: 24/10/2016, 09h22
  2. Appeler une fonction à partir d'une autre fonction
    Par touta1 dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2009, 18h15
  3. [MySQL] Appel d'une fonction a partir d'une autre
    Par panganino dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/05/2009, 18h51
  4. executer une fonction(UDF) à partir d une autre fonction
    Par blaise4714 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/03/2009, 23h06
  5. Lancer une fonction JS à partir d'une autre fonction
    Par tim1789 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/05/2007, 21h32

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