2017-01-22 73 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 !!'); 
 
    }