2015-05-24 103 views
-3

我有一个主要的功能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内部回报功能不工作

回答

4

为什么它不工作

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

考虑以下功能:

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

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

第一个功能不记录消息到控制台,因为console.logreturn之前调用。

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

修复你的榜样

如果你想返回true如果textchecknumcheck返回truthy value,您可以使用逻辑运算符&&:如果您需要要么

// Returns true if both checks pass 
function validate() { 
    return textcheck("txtname") && numcheck("txtnum"); 
} 

要通过的两个测试中,使用OR运算符||

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

如果你想返回每一个人支票的状态,你可以返回一个对象:

function validate() { 
    return { 
    textCheck: textcheck("txtname"), 
    numCheck: numcheck("txtnum") 
    } 
} 
+1

感谢您的信息.......您能否提供价值的解决方案 – user2650277

+1

返回数组中的回报表达 –

+0

感谢的对象方法@joews ......不知道 – user2650277

2

return退出遇到真实时,它的功能,让你的第二个return将永远不会达到。

如果你的目标是返回一个truthy值*如果以下两种功能的调用回报truthy值,你可以使用||

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

这就要求textcheck,如果它返回一个truthy值,返回该值;如果textcheck返回falsey值,则调用numcheck并返回其结果。

如果你想返回,如果的两种功能都返回truthy值truthy值,你可以使用&&

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

这就要求textcheck,如果它返回一个falsey值* ,返回该值;否则它调用numcheck并返回其结果。


我建议通过一些基本的JavaScript教程。


*“truthy价值”和“falsey值”:JavaScript的&&||运营商并不总是导致truefalse就像他们在许多其他语言做。相反,他们寻找“truthy”值(强制为true)或“falsey”值(强制为false)。错误的值是0,"",NaN,null,undefined,当然还有false;真理值是一切。

1

Return in function terminate him。 如果你想验证两个(或更多)值使用一个返回语句。

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

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

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

在调用的功能,你可以得到你的价值观是这样的:

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

在你的代码看,我想你想的validate()的返回如果textcheck()和numcheck()成功,则成功(true)。试试这个 -

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