Il y a probablement une meilleure façon de procéder, par exemple :
// Une fonction anonyme pour fournir une portée
(function() {
var index = 0; // Une variable non globale, mais accessible à tout ce qui est à l'intérieur de cette fonction de portée
function setIndex(newIndex) {
index = newIndex;
faireLesChoses();
}
function one() { two(); }
function two() { three(); }
function three() {
// Peut-être que `three` a besoin de changer l'index
setIndex(index + 1);
}
function faireLesChoses() { }
})();
Si cela ne fonctionne pas pour ce que vous essayez de faire, vous pouvez mettre en place un minuteur d'intervalle et vérifier la valeur par rapport à une copie enregistrée.
var index = 0;
function principal(...) {
var dernierIndex = index;
setInterval(verifierIndex, 100); // Toutes les 100ms environ
function verifierIndex() {
if (index != dernierIndex) {
dernierIndex = index;
faireLesChoses();
}
}
// Autres fonctions omises...
}
Il serait possible que index
soit modifié plus d'une fois entre les intervalles ; cela dépendra de ce que vous essayez de faire.
À l'avenir, vous pourrez le faire avec des accesseurs et des mutateurs sur une propriété (partie de la nouvelle spécification ECMAScript 5), mais ce n'est pas encore largement implémenté. Certains navigateurs les implémentent, bien que avec leur propre syntaxe, mais d'autres ne le font pas (pas encore).