以下是我想要做的過於簡化的示例。目前,我有這樣的事情: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