0

javascriptでオブジェクトリテラルを定義すると、そのオブジェクトはどこに存在しますか?それはその関数のアクティベーションオブジェクトにありますか?これと他の意味の間に技術的な違いがあるかどうかを知るためにこれを求めています:

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

})();

また:

var global = {};
4

2 に答える 2

1

どちらのバージョンでも、まったく同じ結果、つまり空のグローバルオブジェクトが得られます。いいえ、技術的な違いはありません。

于 2012-09-17T13:56:50.677 に答える
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 に答える