Функция может возвращать результат. Для этого используется оператор 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 rectangle(width, height){
const perimeter = width *2 + height * 2;
const area = width * height;
return [perimeter, area];
}
const rectangleData = rectangle(20, 30);
console.log(rectangleData[0]); // 100 - периметр прямоугольника
console.log(rectangleData[1]); // 600 - площадь прямоугольника
В данном случае в функцию rectangle передаются ширина и высота прямоугольника, а внутри функции по этим данным вычисяем периметр и площадь прямоугольника и в виде массива возвращаем из функции.
В качестве альтернативы можно поместить многочисленные возвращаемые данные в один объект:
function rectangle(width, height){
const rectPerimeter = width *2 + height * 2;
const rectArea = width * height;
return {perimeter: rectPerimeter, area: rectArea};
}
const rectangleData = rectangle(20, 30);
console.log("Perimeter:", rectangleData.perimeter); // 100 - периметр прямоугольника
console.log("Area:", rectangleData.area); // 600 - площадь прямоугольника
Одна функция может возвращать другую функцию:
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); // выбираем первый пункт - сложение
const result = action(2, 5); // выполняем функцию и получаем результат в константу result
console.log(result); // 7
В данном случае функция 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);
console.log(action(2, 5)); // 7
action = menu(2);
console.log(action(2, 5)); // -3
action = menu(3);
console.log(action(2, 5)); // 10
action = menu(190);
console.log(action(2, 5)); // 0
Аналогичным образом можно возвращать функции по имени:
function sum(x, y){ return x + y;}
function subtract(x, y){ return x - y;}
function multiply(x, y){ return x * y;}
function zero(){ return 0;}
function menu(n){
switch(n){
case 1: return sum;
case 2: return subtract;
case 3: return multiply;
default: return zero;
}
}
let action = menu(1);
console.log(action(5, 4)); // 9
action = menu(2);
console.log(action(5, 4)); // 1
action = menu(3);
console.log(action(5, 4)); // 20
action = menu(190);
console.log(action(5, 4)); // 0