Skip to content

[4주차] 학습 정리 #17

@poco111

Description

@poco111

Part2 1장(스코프)과 2장(렉시컬 스코프) 학습정리

1장. 스코프

  • JS는 실행 전 별도의 단계에서 파싱, 컴파일이 일어난다.
  • ECMA 명세서에 "컴파일이 반드시 필요하다"고 적혀있지는 않으나 JS의 구문 오류, 초기 오류, 호이스팅이라는 세 가지 특징은 JS 엔진이 선 컴파일 후 실행이라는 동작을 입증할 수 있게 도와준다.
  • 컴파일 타임에 결정되는 스코프를 렉시컬 스코프(어휘 스코프)라고 한다.
  • 렉시컬 스코프의 핵심은 함수나 블록, 변수 선언의 스코프는 전적으로 코드 배치에 따라 제한된다는 점이다.
  • 컴파일 중에는 스코프를 식별하기만 하고 실제 각 스코프를 실행해야만 하는 런타임 전까지는 스코프가 생성되지는 않는다.

2장. 렉시컬 스코프

  • JS 엔진은 컴파일 중에 프로그램을 처리하기 때문에, 변수가 선언된 곳을 찾는 것은 "내가 지금 속한 스코프는 어디야"라고 질문하는 것과 같다.
  • 변수는 특정 스코프에서 선언되면 변수는 다양한 색의 구슬이고 구슬은 같은 색 양동이에 담긴다고 생각할 수 있다.
  • 선언이 이뤄진 스코프와 동일한 스코프에 있는 변수 참조, 혹은 선언이 이뤄진 스코프보다 더 깊은 스코프에 있는 변수 참조는 해당 스코프와 동일한 색을 가진 구슬이 된다.
  • 양동이 색과 양동이에 어떤 구슬이 담길지는 컴파일 중에 결정된다!!
  • 렉시컬 스코프의 특징 중 하나는 현재 스코프에서 식별자 참조를 찾을 수 없을 때, 해당 스코프를 감싸는 바깥 스코프에서 식별자 참조를 찾는 것이다.
  • 만약 탐색이 실패한 경우에는, 오류가 발생한다.
  • undefined(변수 선언 및 발견은 하였으나, 해당 시점에 값이 없는 경우), not defined(접근 가능한 렉시컬 스코프에 식별자에 해당하는 변수 선언이 없는 경우)
  • JS에서는 엄격모드가 아닌 경우에 var, let, const 변수 선언 없이 사용하는 경우에는, 전역 객체(winodw)에 암묵적으로 해당 변수가 할당된다.

책 내용 (p페이지)

  • Part2 1장 처음부터 2장 끝까지

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions