在 javascript 中,当您定义一个对象字面量时,该对象存在于哪里?那是在那个函数的激活对象中吗?我问这个知道这或任何其他含义之间是否存在任何技术差异:
var global;
(function(){
global={};
})();
或者:
var global = {};
在 javascript 中,当您定义一个对象字面量时,该对象存在于哪里?那是在那个函数的激活对象中吗?我问这个知道这或任何其他含义之间是否存在任何技术差异:
var global;
(function(){
global={};
})();
或者:
var global = {};
一个对象没有任何作用域,所以它在你创建它的地方没有任何区别。
但是,如果对象有方法,它们可以使用创建它们的作用域的局部变量:
var global;
(function(){
var local = 42;
global = {
aMethod: function() { alert(local); }
};
})();
局部变量local
只存在于该范围内,但对象中的方法可以使用该变量,因为该方法是在该范围内创建的。
只要方法是在作用域内创建的,同样适用于在作用域外创建的对象;
var global = {};
(function(){
var local = 42;
global.aMethod = function() { alert(local); }
})();
两个版本都有完全相同的结果,一个空的全局对象。所以不,没有技术差异。