javascript中具有全局引用的函数内设置超时的奇怪行为

javascript中具有全局引用的函数内设置超时的奇怪行为,javascript,jquery,global-variables,settimeout,Javascript,Jquery,Global Variables,Settimeout,以下是函数和全局变量的示例: $note_instance = Array(); $note_count = 0; function create(text){ count = $note_count++; time = 5000; $note_instance[count] = $notifications.notify("create", text); setT

以下是函数和全局变量的示例:

      $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);
      }
该函数只需打开一个通知,并设置一个超时,以在5秒内关闭它

所以如果我称之为

 create("Good Note 1");
 create("Good Note 2");
 create("Good Note 3");
Ecah音符应在创建后5秒关闭,但始终只有最后一个音符关闭,在本例中为“好音符3”

每个note对象在$note_实例全局数组中都有自己的条目,因此超时不应覆盖自身


伙计们,我错过了什么?提前感谢

计数
是一个全局变量


您需要通过在函数中添加
var count
将其更改为局部变量。

谢谢,伙计,这确实奏效了。但是,如果“count”没有在函数外部声明,它为什么会在全局范围内呢?
count
从未使用
var
运算符声明过,它只是第一次在
create
函数中使用,所以JavaScript假设它有全局作用域,这就是它在JavaScript中的工作原理——如果变量没有在任何地方声明,它就是一个全局变量。这是一个非常糟糕的想法,但这是语言的设计工作方式。哈哈:)我以为我做到了,然后我记得出于某种原因,系统不允许我选择答案,大约等待9分钟。古怪的不是吗?所以我忘了回来挑选答案。谢谢你的提醒。