Javascript.RU

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

что значат подобные записи вызова функций: foo()(); или foo(1)(3)(5); ?
встретились вот, поиск и обращение к сокурсникам дало результат - это самовызывающиеся функции. но насколько я знаю самовызывающиеся функции это нечто иное? подскажите, как эта запись вообще называется что бы найти по ней информацию! спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 23.02.2015, 17:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

ogurchik,
http://forwebdev.ru/javascript/chaining/
Ответить с цитированием
  #3 (permalink)  
Старый 23.02.2015, 17:49
Аватар для ogurchik
Аспирант
Отправить личное сообщение для ogurchik Посмотреть профиль Найти все сообщения от ogurchik
 
Регистрация: 23.02.2015
Сообщений: 45

спасибо, про цепочки методов знаю, но по-моему это немного не то, нет? тут о чистом js речь идет, о вот таком необычном вызове функции.
Ответить с цитированием
  #4 (permalink)  
Старый 23.02.2015, 18:12
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

рони,
нет, это не цепочки методов, т.к. тут, собственно, этих методов и нет.

ogurchik,
этот шаблон, если не путаю, называется каррирование.

function foo(a) {
  return function(b) {
    return function(c) {
      return a + b + c;
    }
  }
}

var a = foo(1)(1)(1);
alert(a);
Ответить с цитированием
  #5 (permalink)  
Старый 23.02.2015, 18:28
Аватар для ogurchik
Аспирант
Отправить личное сообщение для ogurchik Посмотреть профиль Найти все сообщения от ogurchik
 
Регистрация: 23.02.2015
Сообщений: 45

Safort,
спасибо! очень помогли!
Ответить с цитированием
  #6 (permalink)  
Старый 23.02.2015, 18:30
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

На ES6 выглядит лучше
let a = (a) => {
  return b => {
    return c => {
      return a + b + c;
    }
  }
}

let q = a(1)(1)(1);
Ответить с цитированием
  #7 (permalink)  
Старый 23.02.2015, 19:13
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Safort
лучше
хз насчет лучше... можно так еще
let foo = (a) => (b) => (c) => a + b + c;

console.log(foo(1)(2)(3));

а вообще http://learn.javascript.ru/task/summ...chestva-skobok
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #8 (permalink)  
Старый 23.02.2015, 19:31
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

nerv_,
блин, чот ступил, действительно можно гораздо лаконичней)
Ответить с цитированием
  #9 (permalink)  
Старый 24.02.2015, 06:50
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
хз насчет лучше... можно так еще
let foo = (a) => (b) => (c) => a + b + c;
 
console.log(foo(1)(2)(3))
;
let foo = a => b => c => a + b + c;

Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мой собственный башорг в скайпе))) devote Оффтопик 81 03.10.2012 00:56
Психологическая деформация программистов DreamTheater Оффтопик 59 24.03.2012 05:03
фрактальный сыр x-yuri Оффтопик 76 23.11.2011 21:59
О фрилансе (Личный опыт) free Оффтопик 105 18.08.2011 17:02