2017-01-22 5 views
-4

関数はtrueを返しますが、/ else文が偽の結果を記録する場合はtrueを返します。私がどこに間違っているのか?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かどうかをテストします。楽しく、それは決してありません!

実際にこの機能を実行するとします。あなたはそれを2回実行しないようにするために、結果をキャッシュする必要があります。

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の旅に2週間ですが、アドバイスやヒントをいただければ幸いです。 – 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と評価され、trueに等しいです。関数とブール値は異なる型であるため、厳密な等価性の比較は常に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 !!'); 
 
    } 
 

関連する問題