Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.05.2019, 22:14
Новичок на форуме
Отправить личное сообщение для Рамиль Посмотреть профиль Найти все сообщения от Рамиль
 
Регистрация: 13.05.2019
Сообщений: 2

Директива return
Здравствуйте!

Пожалуйста, помогите понять разницу между этими двумя кодами:

function sum (a, b) {
		return (a + b);
	}
	alert ( sum (5, 6));



function sum (a, b) {
		alert (a + b);
	}
	sum (5, 6);



Цитата из учебника:

"Как только до неё (директивы return) доходит управление – функция завершается и значение передается обратно."

Я не могу понять, что значит значение передаётся обратно, куда обратно передаётся. Ведь по функциональности оба кода одинаковые.
Ответить с цитированием
  #2 (permalink)  
Старый 13.05.2019, 22:55
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Первый вариант показывает чистую функцию, т. е. её результат вычисляется на основе её аргументов. Второй вариант показывает функцию с побочным эффектом: берётся сумма аргументов и выводится в диалоговое окно, в этом случае невозможно построить однозначную таблицу значений функции, поскольку она всегда возвращает undefined.

Побочный эффект, например, выражается в том, что вторая функция sum меняет внешний мир. (Показалось окошко)

Функция alert сама по себе имеет побочный эффект: она что-то выводит на экран.

Лучше использовать чистые функции (первый пример). Когда функция не имеет побочных эффектов, она называется чистой функцией. Чистые функции:
  • проще читать
  • проще отлаживать
  • проще тестировать
  • не зависят от порядка, в котором они вызываются
  • просто запустить параллельно (одновременно)

Статьи:

Последний раз редактировалось Malleys, 13.05.2019 в 23:20.
Ответить с цитированием
  #3 (permalink)  
Старый 14.05.2019, 13:02
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от Рамиль
Я не могу понять, что значит значение передаётся обратно, куда обратно передаётся.
Чтобы было понятнее, немного переделал ваши примеры:

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

Во втором случае функция не возвращает вычисленный результат.
Ответить с цитированием
  #4 (permalink)  
Старый 14.05.2019, 18:24
Новичок на форуме
Отправить личное сообщение для Рамиль Посмотреть профиль Найти все сообщения от Рамиль
 
Регистрация: 13.05.2019
Сообщений: 2

Спасибо. Стало понятнее.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мобильная версия сайта переходит в ПК версию сайта. Luara Элементы интерфейса 0 25.04.2017 10:00
Вызов функции Hol1killer Prototype & script.aculo.us 11 05.12.2016 01:37
Анимация для движения блока вниз и вверх snovapavel jQuery 9 24.12.2015 23:12
Элементарный подсчет и калькулятор PashaShulga Общие вопросы Javascript 5 14.03.2012 21:42
Свойства посредством полиморфных функций tenshi Ваши сайты и скрипты 0 18.03.2010 17:12