2016-09-15 13 views
0

ここでは、私がやりたいことの過度に単純化された例を示します。現在、私はこのようなものがあります:Javascript範囲外の変数の参照

function foo(arg1, arg2) { 
    var obj ={ 
     render:[arg1] 
    }; 
    obj.render.forEach(function(theArg) { 
     console.log(theArg) 
    }); 
} 
foo('one','two'); 
//Displays 'one' 

を私が変更できるようにしたい "objの外部とobj.renderアレイに「arg2に」(または関数foo内でスコープされている他の変数)を追加します。

セットアップ機能は、存在する場合としない場合があり、オブジェクト 'obj'を変更する必要がある追加のスクリプトを表します。残念ながら、arg1とarg2はこのインスタンスでは範囲外ですので、このコードは実行されません。どのように私はこれを達成することができます任意のアイデア?

+1

関数に 'obj'を取る第3引数を追加しますか? 'function foo(arg1、arg2、obj)'のようになり、 'obj'を第3の関数として渡すだけです...あなたの質問はかなり不明瞭です。あなたのより良い、より適切な答えを与えることができると呼ばれる。 – ppeterka

+2

「*外部から「obj」を変更できるようにしたいですか?あなたが示したサンプルコードでは、宣言を最初のスニペットのように 'foo'関数内に置かない理由はありません。 'obj'と一緒に使いたいコードを追加して、' foo'の呼び出し方法と場所を表示してください。 – Bergi

+0

あなたのユースケースを説明できますか?または、実際の関数呼び出しでコードの一部を表示しますか? – Ma3x

答えて

0
すでにあるような renderプロパティを介して、あなたの関数のループ内で、その後

function foo(obj)

obj

function foo(arg1, arg2)

を含めるように関数のシグネチャを変更

obj.render.forEach(function(theArg)

0

グローバルに変数objを宣言します。

次に、関数にobjという引数も渡してください。

あなたが言うべきことは、上記のobj機能と関係がありますか?

関連する問題