Директива return
Здравствуйте!
Пожалуйста, помогите понять разницу между этими двумя кодами:
function sum (a, b) {
return (a + b);
}
alert ( sum (5, 6));
function sum (a, b) {
alert (a + b);
}
sum (5, 6);
Цитата из учебника: "Как только до неё (директивы return) доходит управление – функция завершается и значение передается обратно." Я не могу понять, что значит значение передаётся обратно, куда обратно передаётся. :( Ведь по функциональности оба кода одинаковые. |
Первый вариант показывает чистую функцию, т. е. её результат вычисляется на основе её аргументов. Второй вариант показывает функцию с побочным эффектом: берётся сумма аргументов и выводится в диалоговое окно, в этом случае невозможно построить однозначную таблицу значений функции, поскольку она всегда возвращает undefined.
Побочный эффект, например, выражается в том, что вторая функция sum меняет внешний мир. (Показалось окошко) Функция alert сама по себе имеет побочный эффект: она что-то выводит на экран. Лучше использовать чистые функции (первый пример). Когда функция не имеет побочных эффектов, она называется чистой функцией. Чистые функции:
Статьи: |
Цитата:
function sum (a, b) {
return (a + b);
}
var res = sum (5, 6);
alert ( res);
function sum (a, b) {
alert (a + b);
}
var res = sum (5, 6);
alert ( res);
В первом варианте вычисленный внутри суммы результат возвращается в место вызова функции - строка 4 - и присваивается переменной res Во втором случае функция не возвращает вычисленный результат. |
Спасибо. Стало понятнее. :)
|
| Часовой пояс GMT +3, время: 15:53. |