函数中的多次返回不起作用

时间:2015-05-24 09:38:43

标签: javascript

我在一个主函数validate中有很多函数,由于某种原因它不起作用。但是如果函数validate包含单个函数它可以工作

function validate() {
   return textcheck("txtname");   
   return numcheck("txtnum"); 
  // textcheck and numcheck function are here 
 //doesn't work
}



function validate() {
   return textcheck("txtname");// works fine 
}


  function validate() {
   return numcheck("txtnum"); // works fine 
 }

为什么2在函数内返回不起作用

5 个答案:

答案 0 :(得分:4)

为什么它不起作用

return退出函数,因此第一个return之后的代码永远不会运行。

考虑以下功能:

function logs() {
  console.log('I have been called');
  return;
}

function doesNotLog() {
  return;
  console.log('I will not be called');
}

第一个函数会将消息记录到控制台,因为在console.log之前调用了return

第二个函数没有,因为return在调用console.log之前退出函数。

修复您的示例

如果您想要返回true,如果 textchecknumcheck都返回truthy value,则可以使用逻辑AND运算符{{ 1}}:

&&

如果您需要传递两个测试的 ,请使用OR运算符// Returns true if both checks pass function validate() { return textcheck("txtname") && numcheck("txtnum"); }

||

如果要返回每项检查的状态,可以返回一个对象:

// Returns true if either check passes
function validate() {
   return textcheck("txtname") || numcheck("txtnum"); 
}

答案 1 :(得分:2)

return在遇到此功能后退出该功能,因此永远无法访问您的第二个return

如果您的目标是返回真值*如果两个函数调用的 返回真值,则可以使用||

function validate() {
   return textcheck("txtname") || numcheck("txtnum"); 
}

调用textcheck,如果返回真值,则返回该值;如果textcheck返回falsey值,则会调用numcheck并返回其结果。

如果你想在两个函数的两个返回真值时返回一个真值,你可以使用&&

function validate() {
   return textcheck("txtname") && numcheck("txtnum"); 
}

调用textcheck,如果返回 falsey 值*,则返回该值;否则它会调用numcheck并返回其结果。

我建议您完成一些基本的JavaScript教程。

*" truthy value"并且"虚假价值":JavaScript的&&||运营商不会像他们一样导致truefalse在许多其他语言中。相反,他们寻找" truthy"值(强制为true)或" falsey"值(强制为false的值)。假名值为0""NaNnullundefined,当然还有false;真实的价值观是其他一切。

答案 2 :(得分:1)

返回功能终止他。 如果要验证两个(或更多)值,请使用一个return语句。

function validate() {
    return textcheck("txtname") && numcheck("txtFname"); 
}

答案 3 :(得分:0)

如果您需要同时返回2个值,此解决方案可能会对您有所帮助。你只需要返回一个json对象

function validate() {
   return {
      txtname : textcheck("txtname"),
      txtnum : numcheck("txtnum")
   }
}

调用该函数后,您可以获得如下值:

var result = validate();
// result.txtname 
// result.txtnum

答案 4 :(得分:0)

查看您的代码,我假设您希望validate()返回成功(true),如果textcheck()和numcheck()都成功。试试这个 -

function validate() {
   return textcheck("txtname") &&  
          numcheck("txtnum"); 
}