我正在学习使用在线资源的项目的Javascript,但我不知道如何使这个功能正常工作。
var results =[[a1,a2,a3,a4,a5]];
var winner = 0;
function checkWinner (results)
{
for (var i = 0; i < results.length; i++)
if (results[0][i] > 50)
{
winner = results[0][i];
}
}
在功能之后,我使用: checkWinner(结果);
在HTML文件中,我使用alert来显示变量获胜者。但它显然不起作用。我意识到这是我对范围和全局变量的理解的问题。
答案 0 :(得分:3)
应该是
var Results =[[a1,a2,a3,a4,a5]];
var winner = 0;
function checkWinner (results)
{
for (var i = 0; i < results[0].length; i++)
if (results[0][i] > 50)
{
winner = results[0][i];
}
}
checkWinner(Results);
为避免名称冲突,请从大写字母中命名全局变量。 同样在您的代码中,您调用“父”数组的长度。您需要指定“Child”数组的长度
答案 1 :(得分:1)
您正在迭代result[0]
数组(result[0]
中的数组),但使用result
数组的长度。
答案 2 :(得分:1)
你必须理解scope的概念。变量results
和winner
在函数内部和外部不同。
此外,如果要更改函数外部的变量值,除非使用全局变量,否则必须调用函数并返回。 )。对于新手程序员来说,这似乎很难理解,但仅仅定义一个函数并没有做任何事情。
var results =[[a1,a2,a3,a4,a5]];
function checkWinner (results)
{
for (var result in results[0])
{
if (result > 50)
{
return result;
}
}
}
var winner = checkWinner(results);
请注意:
results[0]
而不是results
,因为无论出于什么原因你都有一个嵌套数组。 results
的参数,所以它要求您传递全局results
,尽管它是全局的。另一种方法:var results = [[a1,a2,a3,a4,a5]];
function checkWinner()
{
for (var result in results[0])
{
if (result > 50)
{
winner = result;
return;
}
}
}
checkWinner();
但是,我建议不要这样使用全局变量。以下是对global variables are bad原因的解释。它适用于C ++,但也适用于JavaScript。