티스토리 뷰
클로저(Closure)
함수 + 함수를 둘러싼 렉시컬 환경(Lexical environment)
내부함수에서 외부함수의 변수 접근 가능 but, 외부함수에서 내부함수 변수는 접근 불가
클로저는 함수가 private한 변수를 가질 수 있게 한다.
- 렉시컬 환경 : 스크립트 전체, 실행중인 함수, 코드블록 등은 자신만의 렉시컬 환경을 갖는다.
왜 이름이 클로저(Closure : 폐쇄) ???
내부함수의 변수에 대한 메모리할당은 유지하지만
외부에서 직접 볼 수 없게 은닉화 하기 때문
- 클로저 기법을 사용하는 이유 : 보안때문이라고 생각한다. 아무나 접근할 수 없기 때문에
let a = 1
function outt() {
console.log(a);
return function inn() {
let a = 101;
console.log(a);
}
}
const getA = outt();
getA();
// 출력
// 1
// 101
- 바로 outt의 내부함수인 inn을 불러내진 못한다. => 폐쇄적이고 정보은닉에 용이, inn함수의 변수 a를 알고 싶다면 outt이라는 함수를 알아야된다.
클로저의 장점
- 정보 은닉하기 좋음
- 정보 보존하기 좋음
- 재사용 용이
클로저의 단점
- 클로저를 많이 쓸 경우 메모리의 용량에 과부화가 오고 퍼포먼스 저하 초래
'개발공부 > 기술면접 대비' 카테고리의 다른 글
[JS] 실행 컨텍스트(Execution Context) (0) | 2023.03.22 |
---|---|
[JS] JS 작동원리, 이벤트 루프, 잡 큐(마이크로태스크 큐) & 태스크 큐 차이점 , Promise와 setTimeout 우선순위 (1) | 2023.03.22 |
[JS] 스코프 (0) | 2023.03.21 |
[JS] var, let ,const 차이 (0) | 2023.03.21 |
브라우저 저장소(쿠키, 웹스토리지) (0) | 2023.03.19 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- createElement
- react
- classList
- 브라우저 저장소
- getCurrentPosition
- e.preventDefault()
- 스코프
- Navigator
- localStorage
- console.log
- 교착상태
- removeitem
- Let
- 얕은복사
- Hook
- var
- 데드락
- setinterval
- Geolocation
- getitem
- setitem
- Return
- const
- 호이스팅
- useState
- setTimeout
- 깊은복사
- innerText
- padStart
- new Date()
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함