наткнулась на пример вызова функции вот таким образом: foo ()();
еще видела где-то подобное но уже с аргументами, т.е. например foo(1)(2)(3);
www.youtube.com/watch?v=N09Ljaaexqk первый пример из вот этого видео, там автор вроде как объяснил что это связано с тем что таким образом первая скобочка вызовет саму функцию, а вторая - функцию которая возвращается внутри внешней функции. не поняла, как это вообще? как работает? конкретного описания про такую запись в учебниках не видела, загуглить не вышло. есть ли в этом какой-то практический смысл, не абстрактный? за любую инфу и ссылки - огромная благодарность! :)

:ps:поиски и вопросы всем подряд показали что это каррирование

@темы: Java script

Комментарии
22.02.2015 в 21:39

After silence that which comes nearest to expressing the inexpressible is music.
.Тапка., Да, вполне себе реальность.

Можно разбирать просто по очереди - foo() возвращает функцию, которую можно позже выполнить. И эту функцию также можно выполнить. И так можно вложенность сделать очень длинной, зависит от задачи.
22.02.2015 в 22:29

Kakou ECTb, ааа, то есть эта foo() возвращает функцию и как бы подставляет ее к следующей паре скобочек? и опять вызывает функцию? или как?
22.02.2015 в 23:14

After silence that which comes nearest to expressing the inexpressible is music.
.Тапка., Ну смотри.

Можно записать так

var func1 = foo(); //в func1 лежит уже функция
var func2 = func1(); //исполняем func1 которая тоже вернула допустим функцию. записали её в func2;
func2();

а в сокращённом виде всё что выше можно записать просто как foo()()() - т.е. сначала выполнится foo(), потом то что вернулось из foo, а потом то что вернулось из функции которая вернулась из foo. Надеюсь так чуть понятней )
22.02.2015 в 23:32

Kakou ECTb, да, спасибо! а как такая запись называется? что бы поискать примеров применения и всякого такого?
23.02.2015 в 12:04

.Тапка., называется «самовызывающиеся функции»
24.02.2015 в 16:45

поиски и вопросы всем подряд показали что это вроде как каррирование.
24.02.2015 в 20:38

.Тапка., зависит от.

foo(1)(2)(3); — может быть каррированием, но вопрос, как я понимаю, не совсем о том
(function() {})() — синтаксическая конструкция js, самовызывающаяся функция
24.02.2015 в 20:54

Astartsky, про самовызывающуюся функцию я знаю, вопрос был именно в том как называется и зачем применяется такая запись с несколькими скобочками подряд)