본문 바로가기

TIL

<자바스크립트 Javascript> 스코프(Scope) (2)

- 함수의 상위 스코프를 결정하는 방법
1) 동적 스코프(Dynamic scope) : 함수를 호출한 위치에 따라 상위 스코프를 결정
2) 정적 스코프(Static scope) 혹은 렉시컬 스코프(Lexical scope) : 함수를 선언한 위치에 따라 상위 스코프를 결정

이 둘 중 자바스크립트와 대부분의 프로그래밍 언어는 렉시컬 스코프를 따른다. 따라서 함수를 선언한 시점에 상위 스코프를 결정한다.


- 암묵적 전역(implicit global)
어떤 함수에, 선언하지 않은 식별자가 있는 경우 해당 함수를 호출하면 자바스크립트는 이를 프로퍼티로 동적 생성한다. 따라서 이 선언하지 않는 식별자는 전역 객체의 프로퍼티가 되며, 전역 변수처럼 동작하게 된다.

다만 이 선언하지 않은 식별자는 변수가 아니므로 변수 호이스팅은 발생하지 않는다. 또한 전역 변수와 달리 delete로 삭제가 가능하다.


- 전역 변수의 사용을 최소화하는 방법
전역 변수 객체 하나를 따로 만들어 사용하는 방법이 있다. 혹은 즉시 실행 함수를 사용하면 전역 변수를 따로 만들지 않아도 되며, 이 함수는 즉시 실행 후 전역에서 바로 사라진다.






참고 : poiemaweb 웹사이트