Description Part2 1장(스코프)과 2장(렉시컬 스코프) 학습정리
1장. 스코프
JS는 실행 전 별도의 단계에서 파싱, 컴파일이 일어난다.
ECMA 명세서에 "컴파일이 반드시 필요하다"고 적혀있지는 않으나 JS의 구문 오류, 초기 오류, 호이스팅이라는 세 가지 특징은 JS 엔진이 선 컴파일 후 실행이라는 동작을 입증할 수 있게 도와준다.
컴파일 타임에 결정되는 스코프를 렉시컬 스코프(어휘 스코프)라고 한다.
렉시컬 스코프의 핵심은 함수나 블록, 변수 선언의 스코프는 전적으로 코드 배치에 따라 제한된다는 점이다.
컴파일 중에는 스코프를 식별하기만 하고 실제 각 스코프를 실행해야만 하는 런타임 전까지는 스코프가 생성되지는 않는다.
2장. 렉시컬 스코프
JS 엔진은 컴파일 중에 프로그램을 처리하기 때문에, 변수가 선언된 곳을 찾는 것은 "내가 지금 속한 스코프는 어디야"라고 질문하는 것과 같다.
변수는 특정 스코프에서 선언되면 변수는 다양한 색의 구슬이고 구슬은 같은 색 양동이에 담긴다고 생각할 수 있다.
선언이 이뤄진 스코프와 동일한 스코프에 있는 변수 참조, 혹은 선언이 이뤄진 스코프보다 더 깊은 스코프에 있는 변수 참조는 해당 스코프와 동일한 색을 가진 구슬이 된다.
양동이 색과 양동이에 어떤 구슬이 담길지는 컴파일 중에 결정된다!!
렉시컬 스코프의 특징 중 하나는 현재 스코프에서 식별자 참조를 찾을 수 없을 때, 해당 스코프를 감싸는 바깥 스코프에서 식별자 참조를 찾는 것이다.
만약 탐색이 실패한 경우에는, 오류가 발생한다.
undefined(변수 선언 및 발견은 하였으나, 해당 시점에 값이 없는 경우), not defined(접근 가능한 렉시컬 스코프에 식별자에 해당하는 변수 선언이 없는 경우)
JS에서는 엄격모드가 아닌 경우에 var, let, const 변수 선언 없이 사용하는 경우에는, 전역 객체(winodw)에 암묵적으로 해당 변수가 할당된다.
책 내용 (p페이지)
Reactions are currently unavailable
You can’t perform that action at this time.
Part2 1장(스코프)과 2장(렉시컬 스코프) 학습정리
1장. 스코프
2장. 렉시컬 스코프
책 내용 (p페이지)