Функция может возвращать результат. Для этого используется оператор 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