Lexical Scope & Scope Chain & Closure

박광민·2023년 3월 23일
0

Lexical Scope

  • 변수나 함수를 참조할 때, 현재 실행되고 있는 코드가 아닌
    해당 변수나 함수를 선언한 위치에 따라서 스코프가 결정되는 것을 말함
    -> 즉, 함수를 어디에서 호출하는지가 아닌 함수를 어디에 정의하였는지에 따라서 해당 함수의 스코프가 결정
    -> 코드가독성과 유지보수성을 높임

  • 자바스크립트는 기본적으로 렉시컬스코프를 따름

Scope Chaning

  • 변수나 함수를 참조할 때 현재 스코프에서 해당 변수나 함수를 찾지 못하면 상위 스코프로 이동하여 찾는 과정을 말함
    -> 이 과정에서 상위 스코프에서도 해당 변수나 함수를 찾지 못한다면
    -> 다시 그 상위 스코프로 이동하여 찾는 과정이 반복
    -> 이를 통해 전역 스코프까지 이동
    -> 클로저를 구현하는데 사용될 수 있음

Scope Chaning의 장점은 무엇인가?

  • 함수를 외부에서 접근하지 못하도록 보호할 수 있음
    -> 함수 내에서 선언된 변수나 함수는 그 함수 내에서만 접근 가능,
    외부에서 접근 불가
    -> 이를 통해 변수의 중복 선언 등의 문제를 방지하고, 변수나 함수의 범위를 명확히 구분
    -> 코드의 가독성을 높임

Closure

  • 함수가 선언됐을 때의 렉시컬 환경(Lexical Environment)을 기억
    -> 함수가 다른 곳에서 호출될 때에도 해당 환경을 참조할 수 있게 해주는 기능

Lexical Environment(렉시컬환경)에 대한 사전지식

  • 변수와 함수의 identifier(식별자)를 저장하고 관리하는 공간

identifier(식별자)에 대한 사전지식

  • 프로그래밍에서 변수, 함수, 클래스 등에 이름을 붙일 때 사용하는 고유한 이름
    -> 각각의 요소를 쉽게 구분하고, 코드를 읽고 이해하기 쉽도록 만들 수 있음
    -> 즉, 코드가독성과 유지보수성을 높임

Closure의 장점은 무엇인가?

  • 데이터 은닉
    • 함수 내부의 변수를 외부에서 직접 접근할 수 없게 만들어 데이터를 보호할 수 있음
      -> 변수를 안전하게 유지하면서도 함수 외부에서 변수를 사용할 수 있는 인터페이스를 제공

  • 상태 유지
    • 함수 호출이 끝난 이후에도 함수 내부의 변수 값을 유지
      -> 예를 들어 어떤 함수에서 카운트를 관리할 때 클로저를 이용하면 카운트 값을 계속해서 유지하면서 함수를 호출할 수 있음

  • 콜백함수
    • 클로저를 이용해서 함수를 다른 함수의 인자로 전달
      -> 콜백 함수로 사용할 수 있음
      -> 비동기처리 등에서 유용하게 사용될 수 있음

Scope Chaining과 Closure의 차이점은 무엇인가?

  • Scope Chaining
    • 변수나 함수를 찾는 과정에 대한 개념
      -> 변수나 함수를 찾을 때 상위 스코프로 이동하는 방식을 사용
      -> 클로저를 구현하는데 사용될 수 있음

  • closure
    • 함수 내부에서 사용된 변수나 함수를 계속해서 접근 가능하게 만드는 개념
      -> 함수 내부에서 참조한 변수나 함수를 종료 후에도 계속해서 접근 가능하게 만드는 방식을 사용
profile
developer(Frontend)

0개의 댓글