Двойные круглые скобки - что означают?

87
06 апреля 2021, 14:00

Помогите пожалуйста понять синтаксис выражения на Javascript в React (Mobx) :

export default function(Component){
    return inject('stores')(observer(Component));
}

Что написано по смыслу я понимаю, а синтаксис не понятен. Как я понял: inject('stores') - функция с параметром 'stores'

Что тогда означают (observer(Component)) ?

Answer 1

Функция может возвращать функцию, которую можно вызвать, она вернет функцию, которая при вызове вернет функцию...

function sum(a) { 
  const add = function(b) { 
    if (b !== undefined) { 
      a = a + b; 
      return add; 
    } 
    return a; 
  } 
  return add; 
} 
 
console.log(sum(1)(2)(3)(4)()) //10

Answer 2

Понятнее станет, если разнести все вызовы функций по переменным:

export default function(Component){
    var stores = inject('stores');
    var componentObserver = observer(Component);
    return stores(componentObserver);
    // return inject('stores')(observer(Component));
}
READ ALSO
Как удалить слово при подключении удаленного javascript?

Как удалить слово при подключении удаленного javascript?

На сайте подключен внешний удаленный javascript таким образом:

94
Не понятное поведение скрола элемента на Safari (ios)

Не понятное поведение скрола элемента на Safari (ios)

Делаю чатПосле того как приходит новое сообщение, прокручиваю скролл до конца страницы, что бы отобразить его:

99
HTML не открывает JS файл

HTML не открывает JS файл

Мой url /course/{id}"Из за того что в url есть id, html страница игнорирует <script>

110
Как реализовать перемещение страницы к определёному месту по скроллу в JS

Как реализовать перемещение страницы к определёному месту по скроллу в JS

Нужно реализовать перемещение страницы к определённому месту по скроллу на JSМоя реализация не рабочая, при перемещении страница "застывает"

103