2015-05-24 57 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"); 
}