Замыкания
function outer() {
var a=5;
return function(b) {
console.log(a+b);
}
}
var inner =outer();
inner(7); //получаем 12
Мы можем переделать внешнюю функцию в анонимную, и устроить вызов на месте
var inner = (function() {
var a=5;
return function(b) {
console.log(a+b);
}
})()
inner(8);
Функция, которая считает количество своих вызовов
var countFn = (function() {
var counter=0;
return function() {
counter++;
console.log(counter);
}
})()
countFn();// в консоль выведется 1
countFn();// в консоль выведется 2
Практика:
- Сделать функцию, которая бы считала количество вызовов самой себя
- Сделать "функцию-копилку". На вход получает число, а возвращает сумму ранее введенных чисел
- Сделать "функцию-мигалку". Функция по очереди выводит то true, то false
- Сделать функцию, которая генерирует функции для отрисовки либо квадратов, либо кругов