不同功能的相同返回变量

时间:2013-11-15 14:09:12

标签: javascript

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

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

我可以将returnVal1用于所有函数返回,而不是像returnVal2returnVal3returnVal这样的众多变量吗? 我可以为所有函数返回使用单个变量吗?

由于

5 个答案:

答案 0 :(得分:4)

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

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

或更短,如果返回值是你唯一需要的东西:

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

如果验证计算量很大,这也可以节省一些时间,因为if - 子句被懒散地评估。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

是的,你可以,但如果你想要一个单一的结束变量来确定是否有任何一个失败,那么我建议这样做:

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

答案 3 :(得分:1)

如果您的returnValues是要组合的基元,您可以轻松地组合它们的分配。在您的代码段中,如果您愿意,可以按如下所示编写:

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

    return !!returnVal; //ensure boolean is returned
});

答案 4 :(得分:0)

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