스코프란?
- 변수나 함수같은 참조 대상 식별자를 찾아내기 위한 규칙
- 이 규칙대로 자바스크립트는 식별자를 찾음
종류
- 전역 스코프: 코드 어디에서든지 참조 가능
- 지역 스코프: 함수 코드 블록이 만든 스코프로, 함수 자신과 하위 함수에서만 참조 가능
자바스크립트 스코프의 특징
- 함수 레벨 스코프: 함수 코드 블록 내에서 선언된 변수는 함수 코드 블록 내에서만 유효
- 보통은 블록 레벨 스코프: 코드 블록 내에서만 유효한 스코프
- ECMAScript 6에 도입된 let은 블록 레벨 스코프
함수 스코프 종류
- 렉시컬 스코프
- 함수를 어디서 호출하는지가 아니라 어디에 선언하였는지에 따라 상위 스코프가 결정됨.
- 동적 스코프
- 함수를 어디에 호출했는지에 따라 상위 스코프가 결정됨.
암묵적 전역
- 선언을 안해도 스코프 체인을 통해 window로 접근해 프로퍼티를 동적 생성함.
스코프체인
- 일단 자신이 속한 스코프에서 찾고 그 스코프에 식별자가 없으면 상위 스코프에서 다시 찾아감.