Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中使对象非全局_Javascript_Object_Scope - Fatal编程技术网

在javascript中使对象非全局

在javascript中使对象非全局,javascript,object,scope,Javascript,Object,Scope,我有一个JavaScript函数,看起来像这样: foo=function(listenerObject) { a={count:0}; foo2=function(){ //does stuff with a } //register listenerObject to callback the function foo2 } 问题是我最终使用此函数注册了多个侦听器,但它们最终都共享同一个“a”对象。有没有一种方法可以防止函数中的对象声明潜入全局范围。 换句话说,我不

我有一个JavaScript函数,看起来像这样:

foo=function(listenerObject)
{
  a={count:0};
  foo2=function(){
    //does stuff with a
  }
  //register listenerObject to callback the function foo2
}
问题是我最终使用此函数注册了多个侦听器,但它们最终都共享同一个“a”对象。有没有一种方法可以防止函数中的对象声明潜入全局范围。 换句话说,我不想做这样的事情

fun=function(){o={count:0}}
o.count++//o is now in the global scope
使用。实际上,您应该使用
var
声明所有变量,否则,您会发现,一堆全局变量相互叠加

例如:

var foo = function(listenerObject) {
  var a = { count: 0 };
  ...
};
使用。实际上,您应该使用
var
声明所有变量,否则,您会发现,一堆全局变量相互叠加

例如:

var foo = function(listenerObject) {
  var a = { count: 0 };
  ...
};