Экспорт переменных и функций в модулях через замыкания в JavaScript
Иногда нужно сделать так, чтобы некоторые переменные и функции модуля были доступны снаружи. Давайте посмотрим, как это делается. Пусть у нас есть следующий модуль:
;(function() {
let str = 'переменная модуля';
function func() {
alert('функция модуля');
}
})();
Давайте экпортируем нашу функцию func.
Для этого запишем ее в свойство встроенного
в браузер объекта window:
;(function() {
let str = 'переменная модуля';
function func() {
alert('функция модуля');
}
window.func = func;
})();
Теперь мы можем вызвать нашу функцию снаружи модуля:
;(function() {
let str = 'переменная модуля';
function func() {
alert('функция модуля');
}
window.func = func;
})();
window.func(); // выведет 'функция модуля'
При этом не обязательно вызывать функцию
как свойство объекта window:
;(function() {
let str = 'переменная модуля';
function func() {
alert('функция модуля');
}
window.func = func;
})();
func(); // выведет 'функция модуля'
Дан следующий модуль:
;(function() {
let str1 = 'переменная модуля';
let str2 = 'переменная модуля';
let str3 = 'переменная модуля';
function func1() {
alert('функция модуля');
}
function func2() {
alert('функция модуля');
}
function func3() {
alert('функция модуля');
}
})();
Экспортируйте наружу одну из переменных и две любые функции.