Вы можете улучшить это, используя аргументы в вашем методе calculateRugbyPoints()
.На данный момент все ваши переменные являются глобальными.Реально вы должны использовать глобальные переменные, когда они совместно используются несколькими функциями.Однако в вашем случае у вас есть только одна функция, поэтому следует использовать аргументы / параметры.Кроме того, вы должны определить переменные, которые являются специфическими для функции (например, tryPointsValue
и т. Д.) Внутри самой функции, а не вне ее.
function calculateRugbyPoints (tries, conversions, penalties){
// Initializing (setting equal to) the variable names to their values (integers/numbers)
let tryPointValue = 5;
let conversionsPointValue = 2;
let penaltyPointValue = 3;
// Initializing more vriables to their computed values
let tryTotalPoints = tries * tryPointValue;
let conversionTotalPoints = conversions * conversionsPointValue;
let penaltiesTotalPoints = penalties * penaltyPointValue;
let totalPoints = conversionTotalPoints + penaltiesTotalPoints + tryTotalPoints;
return totalPoints;
}
Как вы могли заметить, вФункция выше я использовал let
.let
очень похож на var
, однако, когда мы создаем переменную с использованием let
, ее scope определяется в том месте, где она была создана.Это означает, что ни одна из переменных, определенных в функции calculateRugbyPoints
, не может быть доступна вне функции.
Теперь, когда вы создали свою функцию для приема параметров, вы должны пройти через параметрыпри вызове вашей функции:
calculateRugbyPoints(tries, conversions, penalties);
Теперь посмотрим, как вы получаете пользовательский ввод.В данный момент вы переинициализируете свои переменные следующим образом:
var tries = prompt ("How many tries have been scored?");
var tries = parseInt(tries); // <--- var shouldn't be here
Это не очень хорошая идея, поскольку вы переопределяете переменную, используя var
каждый раз.Вы должны использовать var
только тогда, когда определяете переменную в первый раз.Таким образом, приведенный выше код должен выглядеть следующим образом:
var tries = prompt ("How many tries have been scored?");
tries = parseInt(tries);
Это можно даже еще больше упростить до:
var tries = parseInt(prompt ("How many tries have been scored?"));
или даже:
var tries = +prompt ("How many tries have been scored?");
Здесь +
означает преобразование всего, что мы вводим через приглашение в число (целое число, число с плавающей запятой и т. Д.).Но учтите, что parseInt
и оператор +
ведут себя немного по-разному.Но для того, чего вы пытаетесь достичь, вам не нужно слишком беспокоиться об этом.
Существует также много способов получения пользовательского ввода.Еще один способ использования prompt
s - создание формы HTML и использование javascript для получения чисел, пропущенных в этой форме.
Учитывая все это, ваша окончательная программа должна выглядеть примерно так:
function calculateRugbyPoints(tries, conversions, penalties) {
// Initializing (setting equal to) the variable names to their values (integers/numbers)
let tryPointValue = 5;
let conversionsPointValue = 2;
let penaltyPointValue = 3;
// Initializing more vriables to their computed values
let tryTotalPoints = tries * tryPointValue;
let conversionTotalPoints = conversions * conversionsPointValue;
let penaltiesTotalPoints = penalties * penaltyPointValue;
let totalPoints = conversionTotalPoints + penaltiesTotalPoints + tryTotalPoints;
return totalPoints;
}
var tries = parseInt(prompt("How many tries have been scored?"));
var conversions = parseInt(prompt("How many conversions have been scored?"));
var penalties = parseInt(prompt("How many penalties have been scored?"));
alert("Your points are: " +calculateRugbyPoints(tries, conversions, penalties)); // alert the returned value of the function calculateRugbuPoints