-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 回答