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. #41
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par Dave Hiock Voir le message
    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.
    Oui j'avais utilisé ces outils à une époque, j'avais d'ailleurs ouvert certains fils :
    - Est-il possible de connaitre la consommation en mémoire d'une page web ? Comment la libérer ?
    - Les fuites de mémoire

    Mais je ne sais pas si on peut bien voir si il y a une ou plusieurs "copies" de la fonction quand son exécution est lancée plusieurs fois...

    Avec un code C\C++ on peut regarder le code assembleur correspondant (après compilation) et alors on peut voir si il y a une ou plusieurs "copies" de la fonction... On peut voir par exemple si c'est toujours la même fonction qui est appelée avec des paramètres et des variables locales qui peuvent être différentes d'un appel à l'autre... Ces données de travail sont stockées dans la pile, des registres...

    Après peut-être que c'est différent en JS...

    ---> Quand j'ai écrit ceci :

    Citation Envoyé par Beginner. Voir le message
    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)...
    J'avais regardé quelques liens avant comme ce bouquin : JavaScript: The Definitive Guide

    Il y a plusieurs chapitres intéressant concernant ce sujet : chapitre 4.6, le chapitre 8.8...

    Exemple :



    Après j'ai voulu en savoir plus sur ce fameux "Call object" mais je n'ai pas trouvé beaucoup de choses et j'ai lu dans le livre qu'en fait ailleurs on parle plutôt de "Activation object"... Et là on trouve pas mal de chose...

    Exemple : il y a cet article qui explique plusieurs points importants avec des schémas : JavaScript. The Core

    On y trouve notamment une explication de ce qu'est Activation object :

    Activation object

    When a function is activated (called) by the caller, a special object, called an activation object is created. It’s filled with formal parameters and the special arguments object (which is a map of formal parameters but with index-properties). The activation object then is used as a variable object of the function context.

    I.e. a function’s variable object is the same simple variable object, but besides variables and function declarations, it also stores formal parameters and arguments object and called the activation object.
    ...
    Citation Envoyé par Dave Hiock Voir le message
    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 :mrgreen:, on n'est pas sur fadebook à moins que ... ?
    Ah ben du coup j'ai regardé et j'ai vu qu'effectivement je me suis pris plusieurs points négatifs (pouces rouges)... Je ne suis pas sûr de savoir pourquoi, le problème avec ce système c'est qu'on peut approuver ou désapprouver un message sans donner d'arguments du coup on ne sait pas sur quelle base on est jugé...

    Perso je n'ai donné aucun pouce rouge...

    Bref, ce n'est pas très important...

  2. #42
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Exemple : il y a cet article qui explique plusieurs points importants avec des schémas : JavaScript. The Core
    Voici d'autres liens :

    - ECMA-262-5 in detail. Chapter 3.1. Lexical environments: Common Theory.
    - ECMA-262-5 in detail. Chapter 3.2. Lexical environments: ECMAScript implementation.
    - JavaScript: scope chain, variable objects and activation objects.
    - https://hackernoon.com/execution-context-in-javascript-319dd72e8e2c


    ---> Une explication intéressante sur la façon dont se déroule l’exécution d'une fonction :

    - Rules of function creation and application

    Il y a plus de détails ici : ECMA-262-3 in detail. Chapter 2. Variable object.

    Les différentes étapes sont expliquées, cela aborde et répond à certaines des questions discutées dans ce fil...

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

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