본문 바로가기
Development

[20.12.28] YDKJSY - The Bigger Picture

by igy95 2024. 1. 7.

Pillar 1: Scope and Closure

스코프는 서로 중첩을 이루는데, 스코프 안에서는 변수 사용에 대한 룰이 있다.

  • 하나의 스코프 영역에서는, 자신(스코프)의 영역에 선언한 변수와 상위 혹은 외부 스코프의 변수들에 참조할 수 있다.
  • 하위 혹은 내부 스코프의 변수에는 참조할 수 없다.

이러한 특징을 lexical scope 라고 한다. 그리고 스코프 단위는 프로그램이 파싱 될 때 결정된다. 하지만 해당 특징을 가지는 대부분의 언어에 비해 몇 가지 다른 점이 있어서 lexical 적인 특성이 받아들여지지 않기도 하는데 그것은 다음과 같다.

 

  1. 호이스팅
  2. var 키워드로 선언된 변수 : function 단위로 스코프를 가진다.

하지만 이런 점은 그저 JS 언어의 특성 상 몇가지 독특한 부분이기 때문에 잘 살펴 보고 사용할 필요가 있다.

클로저 또한 lexical scope 의 개념에 기반한 매커니즘으로 분류할 수 있다. 함수가 외부의 변수를 참조하는 형식을 가진 채로 다른 스코프에서 실행되었을 때, 기존 스코프의 변수들에 대한 접근을 유지하고 있다는 것이 그 예이다.