2017-01-22 72 views
-4

函數返回true,但是如果/ else語句記錄錯誤結果。任何想法,我要去哪裏錯了?JavaScript If/else語句不返回錯誤語句

function loginDetails(arrayCheck, value) { 
 
\t for(i = 0; i < arrayCheck.length; i++){ 
 
    \t if(arrayCheck[i] === value){ 
 
    \t \t return true; 
 
    } 
 
    } 
 
    return false; 
 
    } 
 

 
\t var username = [1,2,3,4,5,6,7,8,9,10]; 
 
    
 
    document.write('Login Details: ', loginDetails(username, 9), '</p>'); 
 
    
 
    if(loginDetails === true) { 
 
    document.write('Redirect ....Welcome !!</p>'); 
 
    
 
    } else { 
 
    document.write('There seems to be an error please try again !!'); 
 
    } 
 

+3

'loginDetails'是一個函數。它永遠不會等於'真實'。 –

+0

您可能想要做的是將函數'loginDetails'的返回值保存到一個變量中,然後在條件中進行比較。 – Roljhon

+0

'if(loginDetails(username,9)=== true){...}' – talkhabi

回答

1

loginDetails是一個函數。然後測試它是否爲布爾型true。有趣的是,它永遠不會!

我假設你真的想運行該功能。您將需要緩存的結果,爲了不運行它兩次:

function loginDetails(arrayCheck, value) { 
 
\t for(i = 0; i < arrayCheck.length; i++){ 
 
    \t  if(arrayCheck[i] === value){ 
 
    \t \t  return true; 
 
     } 
 
    } 
 
    return false; 
 
} 
 

 
var username = [1,2,3,4,5,6,7,8,9,10]; 
 

 
var loggedIn = loginDetails(username, 9); 
 
    
 
document.write('Login Details: ', loggedIn, '</p>'); 
 
    
 
if(loggedIn === true) { 
 
    document.write('Redirect ....Welcome !!</p>'); 
 
} else { 
 
    document.write('There seems to be an error please try again !!'); 
 
} 
 

+0

非常感謝......非常感謝JS上的新手。 – Evans

+0

@Evans如果您從使用'document.write'的資源學習,請使用不同的東西。 'document.write'在現代Javascript中幾乎沒有用處;這是90年代的遺物! – lonesomeday

+0

感謝您的提示,我進入了我的JavaScript旅程兩週,任何建議或提示將不勝感激。 – Evans

0

你是什麼意思if(loginDetails === true)是什麼意思?這不會將任何參數傳遞給loginDetails函數。
而不是嘗試if(loginDetails(username, 9) === true)。希望這可以工作。
否則將loginDetails(username, 9)存儲在一個變量中,並檢查該變量是否爲true

0

loginDetails是一個函數,我想你想檢查它的結果是否與true相等。

function loginDetails(arrayCheck, value) { 
 
\t for(i = 0; i < arrayCheck.length; i++){ 
 
    \t if(arrayCheck[i] === value){ 
 
    \t \t return true; 
 
    } 
 
    } 
 
    return false; 
 
    } 
 

 
\t var username = [1,2,3,4,5,6,7,8,9,10]; 
 

 
    var loginDetailsResult = loginDetails(username, 9); 
 
    
 
    document.write('Login Details: ',loginDetailsResult, '</p>'); 
 
    
 
    if(loginDetailsResult === true) { 
 
    document.write('Redirect ....Welcome !!</p>'); 
 
    
 
    } else { 
 
    document.write('There seems to be an error please try again !!'); 
 
    }

0

您檢查是否參考的功能是爲真,這將總是爲false。一個函數和一個布爾類型是不同的類型,因此比較嚴格的等於將總是返回false。我已更正了代碼,以便調用函數,並比較函數的結果,而不是對函數的引用。

function loginDetails(arrayCheck, value) { 
 
\t for(i = 0; i < arrayCheck.length; i++){ 
 
    \t if(arrayCheck[i] === value){ 
 
    \t \t return true; 
 
    } 
 
    } 
 
    return false; 
 
    } 
 

 
\t var username = [1,2,3,4,5,6,7,8,9,10]; 
 
    
 
    document.write('Login Details: ', loginDetails(username, 9), '</p>'); 
 
    
 
    if(loginDetails(username, 9) === true) { 
 
    document.write('Redirect ....Welcome !!</p>'); 
 
    
 
    } else { 
 
    document.write('There seems to be an error please try again !!'); 
 
    }