Задать вопрос
jack_azizov
@jack_azizov

Зачем при вызове функции ставят две двойные скобки?

Вот пример
var a = 1;

function getFunc() {
  var a = 2;

  var func = function() { alert(a); };

  return func;
}

getFunc()(); // 2, из LexicalEnvironment функции getFunc


Зачем ставят getFunc()()? в чём разница между getFunc() ?
  • Вопрос задан
  • 4820 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
GeneMoss
@GeneMoss
void
Функция getFunc() возвращает другую функцию (та что в переменной func). Вот вторые скобки нужны затем, чтобы вызвать функцию, которую вернула getFunc().

Можно сделать так:
var func = getFunc();
func(); // тут уже сработает alert(), который она вызывает
Ответ написан
Что б вернуть не функцию, а результат который она возвращает.
Второй скобкой Вы как бы вызываете внутреннюю функцию которая берет выводит переменную a из замыкания.
Если скобки опустить, то return внешней функции вернет Вам не результат а саму функцию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы