J'ai une fonction JS qui est appelée sur la page toutes les quelques secondes. C'est une chose de mise à jour AJAX.
En tant que fonction, je déclare des variables locales. Je ne veux pas utiliser les fermetures ni les variables globales pour diverses raisons.
Je n'avais jamais envisagé cela, mais dois-je libérer/effacer les variables à la fin de la fonction pour libérer de la mémoire ou JS le fera-t-il automatiquement pour moi?
Généralement non. Les variables déclarées avec var
sont locales et sont récupérées lors de votre retour. Si vous omettez la variable var
, les variables sont globales et l'utilisation du mot clé delete
peut être utile pour les variables globales dans certains cas, mais il est généralement préférable de déclarer toutes les variables avec var
afin de ne pas polluer l'espace de nom window
.
delete
peut être utile lors de l’utilisation d’un héritage basé sur un prototype, par exemple:
function myclass() {
this.variable = 'myvalue'
...
delete this.variable // finished with this variable
}
var inst = new myclass()
Gardez à l'esprit que si inst
est supprimé ou devient hors de portée (déchets collectés), tous les attributs qu'il contient seront également supprimés. delete
peut également être utile pour supprimer des éléments de tables de hachage:
var d = {}
d['blah'] = 'myvalue'
...
delete d['blah']
Il y a quelques-uns bogues de récupération de place spécifiques au navigateur. IE a parfois des problèmes pour nettoyer les attributs dans les éléments et les fermetures du DOM, etc. par exemple, bien que beaucoup de ces problèmes aient été réduits dans IE8, je crois.
Javascript a la collecte automatique des ordures. Vous n'avez rien besoin de désallouer.
Les variables sont libérées une fois qu'elles sont hors de portée. Dans votre cas, les variables locales déclarées dans votre fonction seront automatiquement libérées par Js Garbage Collector. Vous n'avez pas à vous en soucier.