【发布时间】:2014-05-14 01:26:21
【问题描述】:
是否有人有一个合理的解释,为什么 javascript 不将对象文字作为值传递给通过函数参数传递的全局变量?
我是否忽略了一些基本规则?
(function(global) {
var id = "3543a1354";
global = {
name: 'global',
getId: function() {
return id;
}
};
})(this.global = this.global || {})
所以本质上,执行代码后参数'global'的值是一个空对象。很奇怪:如果例如在最后一行设置断点并在控制台中执行对象字面量赋值,那么该值会正确传递给“全局”。
顺便说一句,这将按预期工作:
(function(global) {
var id = "3543a1354";
global.name = "global";
global.getId = function() {
return id;
}
}(this.global = this.global || {}))
【问题讨论】:
-
参数变量总是局部变量,所以它们会覆盖同名的全局变量。
标签: javascript object global-variables parameter-passing