Результат функции
Функция может возвращать результат. Для этого используется оператор return
, после которого указывается возвращаемое значение:
function sum (a, b) {
const result = a + b;
return result;
}
В данном случае функция sum()
принимает два параметра и возвращает их сумму. После оператора return
идет возвращаемое значение. В данном случае это значение константы result
.
После получения результата функции мы можем присвоить его какой-либо другой переменной или константе:
function sum (a, b) {
return a + b;
}
let num1 = sum(2, 4);
console.log(num1); // 6
const num2 = sum(6, 34);
console.log(num2); // 40
Возвращение функции из функции
Одна функция может возвращать другую функцию:
function menu(n){
if(n==1) return function(x, y){ return x + y;}
else if(n==2) return function(x, y){ return x - y;}
else if(n==3) return function(x, y){ return x * y;}
return function(){ return 0;}
}
// выбираем первый пункт - сложение
const action = menu(1);
// выполняем функцию и получаем результат в константу result
const result = action(2, 5);
// 7
console.log(result);
В данном случае функция menu() в зависимости от переданного в нее значения возвращает одну из трех функций или пустую функцию, которая просто возвращает число 0
.
Далее мы вызываем функцию menu
и получаем результат этой функции - другую функцию в константу action
.
const action = menu(1);
То есть здесь action
будет представлять функцию, которая принимает два параметра и возвращает число. Затем через имя константы мы можем вызвать эту функцию и получить ее результат в константу result
:
const result = action(2, 5);
Подобным образом мы можем получить и другую возвращаемые функции:
function menu(n){
if(n==1) return function(x, y){ return x + y;}
else if(n==2) return function(x, y){ return x - y;}
else if(n==3) return function(x, y){ return x * y;}
return function(){ return 0;};
}
let action = menu(1);
// 7
console.log(action(2, 5));
action = menu(2);
// -3
console.log(action(2, 5));
action = menu(3);
// 10
console.log(action(2, 5));
action = menu(190);
// 0
console.log(action(2, 5));