为什么在循环中仅检查一个值后函数返回false

时间:2014-11-25 16:42:57

标签: javascript function if-statement for-loop

尝试检查数组中是否存在值,但是我的嵌套if语句正在返回 即使值存在于数组中也为false。这一直有效,直到我在我的循环中添加了一个else,现在它只有在要检查的值是第一个索引时才有效。

        var num = [1,2,3,4,5,6,7,8,9];
        var inp = parseInt(prompt("Enter a number to see if it is in the array:"));

        function checkIfInArray(n,anArray)
        {

            for(var i = 0;i < anArray.length;i++)
            {
                if(num[i] == n)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }   
        }

        var result = checkIfInArray(inp,num);

4 个答案:

答案 0 :(得分:3)

即使您在for - 循环内部进行检查,for - 循环内的代码也只运行一次,因为现在您已经添加了else,它将始终归还。

如果找不到任何内容,则返回false的正确方法是在for循环结束后添加return false

for(var i = 0;i < anArray.length;i++)
{
     if(num[i] == n)
     {
          return true;
     }
} 

return false;

答案 1 :(得分:0)

你的功能会停止&amp;退出第一个&#34;返回&#34;。如果在循环后添加一个返回false,它将确保如果函数没有在循环之后退出(=不在数组中),它将返回false:

    var num = [1,2,3,4,5,6,7,8,9];
    var inp = parseInt(prompt("Enter a number to see if it is in the array:"));

    function checkIfInArray(n,anArray)
    {
        for(var i = 0;i < anArray.length;i++)
        {
            if(num[i] == n)
            {
                return true;
            }
        }
        return false;
    }

    var result = checkIfInArray(inp,num);

答案 2 :(得分:0)

你应该用这个:

    function checkIfInArray(n,anArray)
    {
        for(var i = 0;i < anArray.length;i++)
        {
            if(num[i] == n)
            {
                return true;
            }
        }  
        return false; 
    }

答案 3 :(得分:0)

你有一个if语句在第一次检查时返回,无论是真还是假