Зачем при вызове функции ставят две двойные скобки?
Вот пример
var a = 1;
function getFunc() {
var a = 2;
var func = function() { alert(a); };
return func;
}
getFunc()(); // 2, из LexicalEnvironment функции getFunc
Зачем ставят getFunc()()? в чём разница между getFunc() ?
Функция getFunc() возвращает другую функцию (та что в переменной func). Вот вторые скобки нужны затем, чтобы вызвать функцию, которую вернула getFunc().
Можно сделать так:
var func = getFunc();
func(); // тут уже сработает alert(), который она вызывает
Правильным синтаксисом при инициализации результата замыкания обычно называют такой: (getFunc())();
Тогда становится немного понятнее логика выражения.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.