2

この種のコードがあるとしましょう:

var obj1 = {test: false};

function testCondition(condition){
  if (!condition){
    testCondition(condition);
  }
}

testCondition(obj1.test);

false上記のコードは、引数としてに渡されますtestCondition。値を渡す代わりに obj1.test への参照を渡すにはどうすればよいですか?

編集 すごい、素早い回答ありがとう!! :)しかし、パラメータをチェックしてonCompleteコールバックまたはonErrorコールバックを実行するだけの汎用関数/メソッドを1つ作成したいので、オブジェクト全体を渡すことはできないことを追加したいと思います。上記のコードは、私が現在いる状況の例にすぎません。

4

5 に答える 5

4

私が見る限り、あなたには 2 つの選択肢があります。

  1. メンバーではなく、オブジェクト自体を渡します。次に、メンバーにアクセスして変更できます。

    function testCondition(object) {
        if (!object.test) {
            testCondition(object);
        }
    }
    testCondition(obj1)
    
  2. または、単一の値を変更しているため、関数によってその値を返すことができます。

    function testCondition(condition) {
        if (!condition){
            return testCondition(condition);
        }
    }
    obj1.test = testCondition(obj1.test);
    

参考までに、現在表示されているコードは、条件が false の場合、無限再帰を引き起こします。

于 2013-07-17T13:38:49.693 に答える
0

できません。JavaScript は、オブジェクトと配列を参照で渡し、プリミティブ (整数、文字列、ブール値) を値で渡します。悪い回避策を除いて、あなたが求めていることは不可能です:

function ugly(result) {
  result.success = true;
}

var result = {};

ugly(result);

代わりに、値を返すだけです。これが JavaScript の本来の動作です。

于 2013-07-17T13:37:25.763 に答える