0

在 javascript 中,当您定义一个对象字面量时,该对象存在于哪里?那是在那个函数的激活对象中吗?我问这个知道这或任何其他含义之间是否存在任何技术差异:

var global;
(function(){
  global={};

})();

或者:

var global = {};
4

2 回答 2

1

一个对象没有任何作用域,所以它在你创建它的地方没有任何区别。

但是,如果对象有方法,它们可以使用创建它们的作用域的局部变量:

var global;

(function(){
  var local = 42;
  global = {
    aMethod: function() { alert(local); }
  };
})();

局部变量local只存在于该范围内,但对象中的方法可以使用该变量,因为该方法是在该范围内创建的。

只要方法是在作用域内创建的,同样适用于在作用域外创建的对象;

var global = {};

(function(){
  var local = 42;
  global.aMethod = function() { alert(local); }
})();
于 2012-09-17T14:00:28.357 回答
1

两个版本都有完全相同的结果,一个空的全局对象。所以不,没有技术差异。

于 2012-09-17T13:56:50.677 回答