以下是我想要做的过于简化的示例。目前,我有这样的事情:Javascript引用变量超出范围
function foo(arg1, arg2) {
var obj ={
render:[arg1]
};
obj.render.forEach(function(theArg) {
console.log(theArg)
});
}
foo('one','two');
//Displays 'one'
我希望能够修改“OBJ”外,并添加“ARG2”(或者说是内部函数foo范围的其他变量)的obj.render阵列。因此,像这样:
var obj ={
render:[arg1]
};
function foo(arg1, arg2) {
obj.render.forEach(function(theArg) {
console.log(theArg)
});
}
function setup() {
obj.render.push(arg2);
}
setup();
foo('one','two');
//Need to display 'one' and 'two' in console
的设置功能,代表额外的脚本,可能会或可能不存在,他们需要修改的对象“OBJ”。不幸的是arg1和arg2超出了范围,所以这段代码不会运行。任何想法我可以做到这一点?
添加第三个参数,使用'obj'函数?它就像'function foo(arg1,arg2,obj)',并且只是通过'obj'作为第三个...顺便说一下你的问题还不太清楚,或许给出了更多的上下文,就像显示函数是如何所谓的可以给你更好,更合适的答案。 – ppeterka
你是什么意思“*我想修改'obj'external *”?在你显示的示例代码中,没有理由不像你的第一个代码片段那样将声明放在'foo'函数中。请将您想要使用的其他代码添加到'obj'中,并向我们展示您如何/在哪里调用'foo'。 – Bergi
你能描述一下你的用例吗?或者用实际的函数调用显示代码的一部分? – Ma3x