为什么这个类不返回false|| true

Why this class does not return false|| true?

本文关键字:false true 返回 为什么      更新时间:2023-09-26

我有这个类

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
        })

为什么会这样?

根据您当前的代码,您必须从外部函数传播内部函数的返回值:

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

需要将v.Successv.Fail函数的返回值进一步返回给Class.V:

if (v.BooleanValue) {
    return v.Success();
    // ^ return here
} else {
    return v.Fail();
    // ^ and here
}

你需要返回你的方法的值:

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

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;
      }
    })
}