Javascript引用变量超出范围

时间:2016-09-15 19:44:35

标签: 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

setup函数表示可能存在或不存在的其他脚本,并且需要修改对象< obj'。不幸的是,arg1和arg2在这个实例中不在范围内,所以这段代码不会运行。我有什么想法可以做到这一点吗?

2 个答案:

答案 0 :(得分:0)

更改您的功能签名以包含obj

function foo(arg1, arg2)

function foo(obj)

然后在你的函数循环中通过render属性,就像你已经一样。

obj.render.forEach(function(theArg)

答案 1 :(得分:0)

全局声明您的变量obj

然后,让你的函数也有obj传递的参数。

执行内部函数obj所需的操作。