Bonjour,
Une question me préoccupe en ce moment, je me demande si le garbage collector en JavaScript est robuste (surtout que cela dépend des navigateurs...)
Mon exemple est le suivant : une fonction est appelée très fréquemment (plusieurs dizaines de fois par seconde). Cette fonction instancie une variable locale à chaque exécution (cf. code technique #1). À la sortie de cette fonction, la mémoire de la variable locale est théoriquement libérée. Le mécanisme de garbage collector est-il fiable à ce niveau ? Ou est-il préférable d'utiliser une instance unique de la variable, qui se situera dans le scope immédiatement supérieur ? (cf. code technique #2)
Je ne sais pas si ma question est claire, voire même pertinente... j'espère que l'exemple de code suivant sera plus parlant :
j'attends vos avis :DCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 // - l'event "mousemove" est déclenché des dizaines (centaines ?) de fois par seconde // - "maVariable" est utilisé uniquement dans la fonction déclenchée par le mousemove // - les 2 techniques sont équivalentes en terme de vitesse d'exécution // technique 1 : la variable est réinstanciée à chaque fois // avantages : variable locale en accès direct, meilleure encapsulation // inconvénient (a priori) : la mémoire est-elle toujours bien nettoyée ? $(document).ready(function () { $('#monElement').mousemove(function (e) { var maVariable = uneFonction(); // (...) }); }); // technique 2 : une seule instance de la variable // avantage (a priori) : gestion mémoire plus sûre ? // inconvénients : accès indirect à la variable, mauvaise encapsulation $(document).ready(function () { var maVariable; $('#monElement').mousemove(function (e) { maVariable = uneFonction(); // (...) }); });