我有以下功能。
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的正确答案。所以我假设我在那里做错了。有什么想法吗?
答案 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];
}
}
}