렉시컬 스코프
•
클로저 → 렉시컬 스코프를 빼고 얘기할 수 없다
◦
연관성이 뭔가요
◦
클로저: 외부함수를 참조하는 내부함수
◦
내부 함수 입장에서 상위 스코프: 외부함수
◦
모든 함수는 클로저다: 전역 변수를 참조하는 함수들은 모두 상위스코프를 참조하고 있기 때문에 클로저 함수라고 할 수 있다.
•
렉시컬 스코프: 함수가 처음 선언이 될 때 상위 스코프에 있는 메모리를 참조할 때 어떻게 참조할 지 정하는 방식
◦
정적스코프(렉시컬 스코프): 함수가 선언되었을 때 상위 스코프 참조
▪
왜 렉시컬일까요: 사전에 정의된, 어휘의
▪
스코프가 뭐에요
•
프로그래밍이 실행되는 범위
•
글로벌 스코프
◦
호이스팅
◦
코드가 거대해졌을 때 같은 전역 변수를 사용하는 경우 늦게 정의된 변수의 값으로 덮어쓰여진다.
◦
이런 문제를 해결하기 위해 스코프로 구분을해서 변수의 사용 범위를 제한한다.
▪
자바스크립트는 정적 스코프를 사용한다.
◦
동적 스코프: 함수가 실행되는 환경에서 함수를 호출한 곳에서 상위 스코프 참조
▪
어떤 스코프를 참조하게 될지 모른다.
•
실행 콘텍스트
◦
전역 환경 실행 콘텍스트
▪
this: 전역에서 사용되는 객체 (호스트 객체: global, window 등)
▪
전역 변수로 정의하면 글로벌 객체 안의 멤버로 등록된다.
•
렉시컬 환경
◦
어디서 선언되었으며 상위 스코프가 무엇인지 저장
◦
실행 콘텍스트에 대한 정의가 렉시컬 환경이다. → 좀 더 공부하신다고 함
자바스크립트는 렉시컬 환경을 사용하고, 선언되는 환경이 중요하다.