为什么这个for循环不起作用?

时间:2016-05-24 13:17:28

标签: javascript jquery for-loop

之间的确切区别是什么:

<p id="test"></p>

<script>

function findMax() {
    var i;
    var max = -Infinity;
    for(i=0;i<arguments.length;i++) {
        if(arguments[i] > max) {
            max = arguments[i];
        }
    }
    return max;
}

document.getElementById('test').innerHTML = findMax(32, 133, 83, 163);

</script>

<p id="test"></p>

<script>

function findMax() {
    var i = 0;
    var max = -Infinity;
    for(; i < arguments.length ; i++) {
        if(arguments[i] > max) {
            max = arguments[i];
        }
    }
    return max;
}

document.getElementById('test').innerHTML = findMax(32, 133, 83, 163);

</script>

也许我错过了一些课程但是第一个输出163,应该是,而第二个输出0.控制台说

  

SyntaxError:不在函数中返回

     

return max;

为什么第二个返回最低值,而第一个返回最高值?

3 个答案:

答案 0 :(得分:3)

  

而第二个输出0。

您没有将初始化为0

这意味着我未定义,undefined + 1NaN

  

SyntaxError:不在函数中返回

你在for循环之后错过了大括号,所以return语句超出了函数定义

function findMax() {
    var i;
    var max = -Infinity;
    for(i = 0; i < arguments.length ; i++)
    {//this was missed
        if(arguments[i] > max) 
        {
            max = arguments[i];
        }
    }
    return max;
}

答案 1 :(得分:1)

对于第二个,您忘记了左括号{和初始值i=0

您也可以使用Math.max()

答案 2 :(得分:1)

第二,你错过了{,试试:

function findMax() {
    var i;
    var max = -Infinity;
    for(; i < arguments.length ; i++) {
        if(arguments[i] > max) {
            max = arguments[i];
        }
    }
    return max;
}