Вы должны понять концепцию 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();
Однако я бы рекомендовал не использовать глобальные переменные таким образом. Вот объяснение того, почему глобальные переменные плохие . Это для C ++, но это относится и к JavaScript.