[Javascript] 클로저

Hyun Jung·2021년 9월 29일
0
post-thumbnail

클로저의 개념

  • 클로저는 함수를 지칭하고 또 그 함수가 선언된 환경과의 관계라는 개념이 합쳐진 것을 뜻함
  • 이렇게 개념만 보면 무슨말인지 모르겠으니 코드를 보면서 이해를 해보자
// 스코프는 함수 단위로
function outer() {
    var a = 1;
    var b = 'B';

    function inner() {
        var a = 2;
        console.log(b)
    }
    inner();
}

outer();
  • 실행결과
    • inner 내장함수에 b를 선언한 변수가 없다! 그럼 외장함수인 outer로 이동해서 확인한다. var b = 'B' 가 있으므로 B가 출력됨!

결론

  • 클로저는 스코프(각 함수마다 존재, 변수명들의 집합)를 계속 들고있음
  • 원래 함수 내부에 선언한 변수는 함수가 끝나면 사라지지만, 클로저가 스코프를 계속 들고 있으므로 그 함수 내부의 변수를 참조할 수 있게 됨
    • 마치 Prototype이랑 비슷한 느낌으로? 기본적으로 window라는게 맨 바깥에 있고, 함수를 만들어서 그 함수를 호출했을 때 보여줘야 할 값이 없으면 더 위의 것을 참조하고, 거기에도 없으면 더 위의 것을 참조해서 가져오는거고, 만약 맨 위에도 없으면 undefined이나 오류가 발생하는 것처럼
profile
Fontend Engineer

0개의 댓글

관련 채용 정보