JavaScript函数没有给出正确的输出

时间:2011-11-11 15:42:05

标签: javascript

我有以下功能。

function checkWinner (results)
{ 
  for (var i = 0; i < results.length; i++)
  if (results[i] > 50)
  {
    var win = results[i];
    return win;
  }
  else if  (results[i] < 50)
  {
    var win = 0;
    return win;
  }
}

结果数组是:

var results = [12,32,53,12,23];

然而,当我期待53时,我得到了0。

我正在使用:

调用该函数
var win = (checkWinner(results));

当我从代码中删除else if语句时,我得到53的正确答案。所以我假设我在那里做错了。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

函数总是从第一次迭代的“for”循环返回,其中值不是50.想想看:当值大于50时,你的“if”条件将从函数返回,并且当它小于50.对于你的测试数据,数组的第一个元素小于50,所以你得零。

由于您已经发现删除“其他”部分可以解决问题,您还需要什么?

答案 1 :(得分:3)

如果您在调试器或纸上单步执行代码,则应该清除错误。

基本上,数组中的第一个元素导致执行else子句,并在该子句中立即返回。所以该函数只检查第一个元素。

答案 2 :(得分:1)

如果某人有50个结果会怎样??? secode应该是else,而不是

主要发生这种情况是因为你明确地返回0。

function checkWinner (results)
{ 
  for (var i = 0; i < results.length; i++)
  {
    if (results[i] > 50)
    {
      return results[i];
    }
    else
    {
      return results[i];
    }
  }
}