Voici la fonction et globals:comportement étrange réglage de délais d'attente dans une fonction avec des références mondiales en javascript
$note_instance = Array();
$note_count = 0;
function create(text){
count = $note_count++;
time = 5000;
$note_instance[count] = $notifications.notify("create", text);
setTimeout(function(){ $note_instance[count].close() }, time);
}
La fonction ouvre simplement une notification, un délai fixe un pour le fermer en 5 secondes.
donc si j'appelle cette
create("Good Note 1");
create("Good Note 2");
create("Good Note 3");
note Ecah doit fermer 5 secondes de leur création, mais toujours et seulement la dernière note ferme, dans ce cas, « bonne note 3 ». Chaque objet de note a sa propre entrée dans le tableau global $ note_instance, de sorte que les délais ne doivent pas être écrasés par eux-mêmes.
Qu'est-ce que je manque ici les gens? Merci d'avance
Merci mon pote, ça a fait l'affaire. Mais comment se fait-il que 'count' soit dans la portée globale s'il n'a pas été déclaré en dehors de la fonction? – Pablo
'count' n'a jamais été déclaré avec l'opérateur' var', il a juste été utilisé pour la première fois dans la fonction 'create', donc JavaScript suppose qu'il a une portée globale. – maerics
Voilà comment cela fonctionne en JavaScript - si une variable n'est déclarée nulle part, c'est une variable globale. C'est une très mauvaise idée, mais c'est comme ça que le langage est conçu pour fonctionner. –