-2

私はこのクラスを持っています

Class.V = function(v) {
    if (v.BooleanValue == true) {
        v.Success();
    } else {
        v.Fail();
    }

    return Class;
}

そして、フォームを処理するかどうかを true または false で返す関数を実行するボタンがあります。

<input type="submit" onclick="return check()" Value="Check" />


function check() {
    Class.V({
        BooleanValue: true,
        Success: function() {
            return true;
        },
        Fail: function() {
            return false;
        }
    })

しかし、それはうまくいきません。代わりにこの作品:

function check() {
    Class.V({
        o: true,
        Success: function() {
            results = true;
        },
        Fail: function() {
            results = false;
        }
        return results;
        //now works as expected
        })

なぜこれが起こるのですか?

4

4 に答える 4

1

現在のコードによると、外部関数から内部関数の戻り値を伝播する必要があります。

Class.V = function(v)
{
    if (v.BooleanValue) {
        return v.Success();
    } else {
        return v.Fail();
    }

    return Class;
}
于 2013-03-04T14:36:01.470 に答える
0

v.Successandv.Fail関数が返す値をさらに返す必要がありますClass.V

if (v.BooleanValue) {
    return v.Success();
    // ^ return here
} else {
    return v.Fail();
    // ^ and here
}
于 2013-03-04T14:35:58.433 に答える
0

メソッドの値を返す必要があります。

Class.V = function(v)
{
if(v.BooleanValue==true)
{
   return v.Success();
}
else{
   return v.Fail();
}
}
于 2013-03-04T14:36:19.390 に答える
0

returnチェーンではなく、現在の関数呼び出しにのみ影響します。コードの最初のブロックの場合return true;、匿名コールバックからのみ戻ります。あなたはそれを渡さなければなりません。このようなもの:

Class.V = function(v) {
    return v.BooleanValue ? v.Success() : return v.Fail();
}

function check() {
    return Class.V({
      BooleanValue: true,
      Success:function() {
          return true;
      },
      Fail:function() {
          return false;
      }
    })
}
于 2013-03-04T14:36:46.550 に答える