function foo() {
return function() {
}
}
function outerFn() {
let outerVar = 'outer';
console.log(outerVar);
function innerFn() {
let innerVar = 'inner';
console.log(innerVar);
}
return innerFn;
}
let globalVar = 'global';
outerFn()()
// outer
// inner
let innerFn = outerFn(); // outer
innerFn() // inner
[ function innerFn() {} => 클로저함수 ]
1. 클로저 함수는 아래의 3가지에 접근이 전부 가능합니다.
// x값을 고정해놓고 재사용할 수 있다
function adder(x) {
function closer(y) {
return x + y;
}
return closer;
}
adder(2)(3);
// 5
let add10 = adder(10);
add10;
/* ƒ (y) {
return x + y;
} */
add10(3);
// 13
function htmlMaker(tag) {
let startTag = '<' + tag + '>';
let endTag = '</' + tag + '>';
return function(content) {
return startTag + content + endTag;
}
}
let divMaker = htmlMaker('div');
divMaker('hi') // "<div>hi</div>"