Пока вы пишете свои функции, где-то вам нужно передать несколько значений для выполнения функции, или в другом случае ваше тело функции может выполняться самостоятельно. И они различаются как программист, так и логика, стоящая за задачей. Давайте рассмотрим приведенный выше пример,
то, что нам нужно для достижения, простое добавление функциональности.
блок 1
var integer1 = 10;
var integer2 = 20;
function sum () {
sum = (integer1 + integer2);
return sum;
}
alert(sum());
, чтобы получить результат, вам нужно иметь integer1
& interger2
в теле, как у вас уже есть. поэтому логика вашей функции где-то зависит от других элементов. Это не очень хорошая практика, так как мы создаем функции для обработки конкретной логики, независимой от остальной части кода.
Так что во всем процессе выполнения мы можем вызывать эту функцию, и она всегда будет вести себя одинаково.
блок 2
var integer1 = 10;
var integer2 = 20;
function sum (integer1, integer2) {
sum = (integer1 + integer2);
return sum;
}
alert(sum());
Теперь в этом случае мы вызываем ту же функцию, но с параметрами. В этом случае сумматору нужно добавить как минимум 2 значения. Таким образом, в любой момент времени, когда мы вызываем эту функцию, она дает нам результат суммы передаваемых аргументов.
Так что эта функция не зависит от var integer1
& var integer2
, если мы передадим некоторые другие переменные этой функции, мы можем получить то же поведение.
Теперь нам нужно помнить, что когда мы вызываем функцию (как вы делаете внутри "alert(sum());
"), нам нужно проверить, требует ли функция каких-либо параметров, если так, то мы должны передать ее в качестве аргументов, например
// define our adding function
function sum (a, b) { // argument variables may have different variable names
sum = (a + b); // which only live within the function **scope**
return sum;
}
//calling sum
sum(integer1, integer2); // we already declared these two variables integer1 & integer2
// calling sum with direct values
sum(5, 5); // it returns 10
// now we have two new variables
var num1 = 50;
var num2 = 20;
sum(num1, num2); // as we expect it returns 70
почему вы получили NaN
это языковая функция, так как вы используете Javascript, любая переменная, которая не определена, имеет значение undefined
, вы можете сказать, что это свойство Javascript
NaN означает не число, когда мы выполняем операцию сложения, переменные аргумента внутри функции ожидают себя как переменная типа числа, но, следовательно, мы не передали никаких параметров при вызове функции sum()
, integer1
& integer2
содержит свойство undefined, поэтому в результате вы получаете NaN.
как видите, я передаю два целочисленных значения 5, 5
для вызова sum
, в другом случае num1, num2
переменных целочисленного типа для вызова sum
.
* Если вы внимательно посмотрите на последнюю строку, вы увидите, что вы вызвали alert (). Это предопределенная функция, которую мы получаем из коробки языка программирования javascript. Но чтобы сделать оповещение о том, что он делает, нам нужно передать значение, тогда только оно может показать это значение в окне оповещения.
так что пока вы звоните alert(sum(integer1, integer2));
(ваш исправленный код)
он сначала выполняет sum и возвращает значение из него, затем вызывает alert, используя возвращаемое значение, и принимает его в качестве аргумента для вызова самого себя. После этого мы получаем окно предупреждения с результатом добавления.
Спасибо, надеюсь, вы получите минимум знаний о функциях. Это общая концепция, а не только для JavaScript.