繁体   English   中英

相同的返回变量用于不同的功能

[英]same return variable for different functions

我有很多用于验证的功能。 我可以对所有功能使用相同的返回变量吗?

function fn1() {
    if () {..
        first = true;
    } else {
        first = false;
    }
    return first;
}

function fn2() {
    if () {..
        second = true;
    } else {
        second = false;
    }
    return second;
}

function fn3() {
    if () {..
        three = true;
    } else {
        three = false;
    }
    return three;
}


$('#submitButton').click(function () {
    var returnVal = true;
    returnVal1 = fn1();
    returnVal2 = fn2();
    returnVal3 = fn3();

    if (returnVal1 && returnVal2 && returnVal3) {
        returnVal = true;
    } else {
        returnVal = false;
    }
    return returnVal;
});

代替这些诸如returnVal1returnVal2returnVal3这样的returnVal1 ,我可以对所有函数returnVal使用returnVal吗? 我可以对所有函数返回使用单个变量吗?

谢谢

您可以将所有变量放在一起,并仅在if子句中调用验证函数:

$('#submitButton').click(function () {
    if ( first() && second() && third() ) {
       return true;
    } else {
       return false;
    }
});

或更短,如@FishBasketGordo所建议的那样,如果唯一需要返回值:

$('#submitButton').click(function () {
    return first() && second() && third();
});

如果确认是相当重的计算,这也为您节省了一些时间,因为if -clause是lazely评估。

您可以用以下代码替换最后一个函数

$('#submitButton').click(function(){
    return (first() && second() && third());
});

是的,您可以,但是如果您希望使用一个结束变量来确定是否有任何一个失败,那么我建议这样做:

var isValid = first();
if(!second())
    isValid = false;
if(!three())
    isValid = false;

这样,您就不会最终重置带有后续结果的无效标志。

这样做的好处是,如果您有很多验证函数,则可以将它们放入数组中并编写更少的代码...

var validators = [first, second, three];//etc..
var isValid = true;
for(var i = 0; i < validators.length; i++){
    if(!validators[i]()){
        isValid = false;
        break;
    }
}
//do something with isValid

或者,如果您有专用的“全部验证”功能,...

var validators = [first, second, three];
function validateAll(){
    for(var i = 0; i < validators.length; i++){
        if(!validators[i]()){ 
            return false;
        }
    }
    return true;
}

如果returnValues是将要组合的原语,则可以轻松地组合它们的分配。 如果您愿意,可以在代码段中将其编写如下:

$('#submitButton').click(function () {
    var returnVal = first() && second() && third();

    return !!returnVal; //ensure boolean is returned
});
function validateFunction(){   
  var result;     
  // First Function Condition\
  if(First Function)
      { 
        result = true;
      else
        result = false;
      }
      checkTruFalse(result);

  // Second Function Condition
  if(Second Function)
      { 
        result = true;
      else
        result = false;
      }
      checkTruFalse(result);

   // Third Function Condition
   if(Third Function)
       { 
         result = true;
       else
         result = false;
       }
       checkTruFalse(result); 
   }
 }

 function checkTruFalse(result)
   {   
     if (result == false ){ alert('ERROR'); break; } 
   }

 $('#submitButton').click(function(){ validateFunction(); });

根据情况,您可以在checkTruFalse函数内传递另一个变量来设置有关特定错误的警报消息。

function checkTruFalse(result, message ){
  alert('ERROR :: '+message);
}

checkTruFalse( result, 'Invalid Input for Numeric Value');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM