: 주변의 상태(lexical environment)의 참조와 함께 번들로 묶인 함수의 조합, inner함수에서 outer함수의 스코프에 접근을 가능하게 해줌, 함수가 생성될 때마다 생성
function outer(){
const name = 'kylie';
console.log(name); // kylie
}
console.log(name); // error
function outer(){
const name = 'kendall';
console.log(name); // kendall
return function inner(){
const greeting = 'hello'
console.log(greeting, name);
}
}
const getKendall = outer(); // kendall
getKendall(); // hellokendall
name
에 접근 가능const btn = document.querySelector('button');
btn.addEventListener('click', handleClick);
let count = 0;
function handleClick(){
count++;
return count;
}
const btn = document.querySelector('button');
btn.addEventListener('click', handleClick);
function handleClick(){
let count = 0;
return function (){
count++;
return count;
}
}
const newTag = function(open, close){
return function(content){
return open+content+close;
}
}
const bold = newTag('<b>','</b>');
const italic = newTag('<i>','</i>');
console.log(bold(italic("This is my content!")));
// <b><i>This is my content!</i></b>
function outer(){
let name = 'kylie';
if(true){
let city = 'seoul';
return function inner(){
console.log(city);
};
}
}
console.log(city)
대신 console.log(name)
이 들어갔다면)Closure은 다른 함수 안에 정의된 내부 함수로서 (1)외부 함수의 식별자를 참조하고, 동시에 (2)외부 함수보다 생명주기가 긴 중첩함수
참고자료
https://developer.mozilla.org/ko/docs/Web/JavaScript/Closures
https://velog.io/@proshy/JS%ED%81%B4%EB%A1%9C%EC%A0%B8closure%EC%99%80-%ED%81%B4%EB%A1%9C%EC%A0%B8%EC%9D%98-%EC%82%AC%EC%9A%A9-%EC%98%88%EC%A0%9C
https://seo-tory.tistory.com/48