Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Какой резон передавать функции в другое место? (https://javascript.ru/forum/misc/76148-kakojj-rezon-peredavat-funkcii-v-drugoe-mesto.html)

hoz 09.12.2018 12:56

Какой резон передавать функции в другое место?
 
Читаю учебник. Хотя, это не первое упоминание о такой возможности, но. тем не менее, очередной раз я об этом услышал, но никаких доводов логичных для подобных возможностей в языке не сказано.
Вот пример:
var f = function factorial(n) {
  return n ? n*factorial(n-1) : 1;
};

var g = f;  // скопировали ссылку на функцию-факториал в g
f = null;

alert( g(5) ); // 120, работает!

Я вижу это так:
1. Копирование функции в другую переменную производить дублирование кода.
2. Увеличивает количество используемой памяти.
Ведь если есть функция, и она работает как нужно, то её нужно использовать, а не копировать куда-то, а потом использовать под другим именем. Абсурд какой-то, на первый взгляд.
Вот и хочется увидеть адекватный вариант применения такого похода, если, конечно, кто-нить это вообще использует.

laimas 09.12.2018 13:00

Цитата:

Сообщение от hoz
Копирование функции в другую переменную производить дублирование кода.

Это не копия и не дублирование, а ссылка на одну и туже функцию.
https://learn.javascript.ru/object-reference

hoz 09.12.2018 13:42

Цитата:

Сообщение от laimas (Сообщение 500107)
Это не копия и не дублирование, а ссылка на одну и туже функцию.
https://learn.javascript.ru/object-reference

А что мешает воспользоваться базовой переменной, а не той, в которую копируется ссылка на ту же переменную, что и базовая?
Я провожу аналогию. Такого в других языках не встречалось.. Дико, на самом деле))

laimas 09.12.2018 14:02

Цитата:

Сообщение от hoz
Такого в других языках не встречалось.. Дико, на самом деле

Да неужто, например и т.п.

hoz 09.12.2018 14:18

Цитата:

Сообщение от laimas (Сообщение 500110)
Да неужто, например и т.п.

Я имел ввиду Java, C#, в основном. Другие не рассматриваю, т.к. на другом не писал. Писал ещё на 1 и пишу, но там разработка не программ, а ботов. И он примитивнее. В первых двух такого нет.

laimas 09.12.2018 14:23

Что вам найти применение ссылок в Си или сами найдете?

j0hnik 09.12.2018 18:19

https://www.youtube.com/watch?v=4oud...eWwem&index=21
первые две минуты

hoz 10.12.2018 18:14

Цитата:

Сообщение от j0hnik (Сообщение 500133)

Тема не раскрыта. Ну сказал он, что если присвоить одну переменную-объект в другую переменную-объект, то они будут ссылаться на один и тот же участок памяти. Так это я знаю уже несколько лет. Так во всех языках.
А вот какой с этого толк - тема не раскрыта.
Как я понимаю, используется это не часто. Как попадётся где-нить, то можно будет увидеть причину использования такого подхода..

SuperZen 10.12.2018 21:09

Будут асинхронные запросы, тогда и вопрос решится )

Белый шум 11.12.2018 00:50

hoz,
почитайте про замыкания в яваскрипте, когда из функции возвращается другая ф-я. Там эта возможность широко используется.

Для объектов/массивов очевидное применение - передача параметров в функцию по ссылке, чтобы не копировать большие объёмы данных лишний раз.


Часовой пояс GMT +3, время: 13:53.