스코프는 함수나 변수에 대한 접근 권한과 유효 범위를 말한다.
각 함수가 생성 될 때 스코프가 생성되고 함수의 내부에 생성된 변수는 해당 스코프에 속한다.
스코프는 중첩 가능하고, 내부 스코프는 외부 스코프를 참조 가능하며, 외부 스코프는 내부 스코프를 직접적으로 참조할 수 없다.
스코프 체인은 이러한 스코프에서 변수를 찾는데 사용되고, 현재 스코프에서 찾지 못 하면 이보다 상위 스코프에서 찾는데, 이러한 과정은 전역 스코프까지 진행된다.
스코프의 유형에는 글로벌 스코프와 지역 스코프(로컬 또는 함수 스코프), ES6 이후에는 let과 const 키워드를 사용하여 블록 레벨 스코프를 생성할 수 있다.\
글로벌 스코프
1. 코드의 최상위 레벨에서 선언된 변수는 어디서든지 접근 가능한 글로벌 스코프를 가진다.
2. 글로벌 스코프에 선언된 변수는 어플리케이션 전역에서 사용할 수 있으며, 프로그램의 생명주기 동안 살아있다.
지역 스코프 (로컬 또는 함수 스코프)
1. 함수 내부에서 선언된 변수는 함수 내부에서만 접근할 수 있는 함수 스코프를 가진다.
2. 함수 스코프는 함수가 실행될 때 생성되고, 실행이 종료되면 스코프와 내부에 선언된 변수들은 사라진다.
3. var키워드를 사용하여 선언된 변수는 함수 스코프를 따른다. (let과 const는 블록 레벨 스코프)
렉시컬 스코프
렉시컬 스코프는 스코프의 유형을 결정하는 방식이다.
코드가 작성된 문맥을 기반으로 스코프를 결정한다.
함수의 스코프는 함수가 정의된 위치에 의해 결정되고, 실행 시점의 호출 위치에 의해 결정되지 않는다.
쓰면서 드는 생각은 내가 아는 클로저와 비슷한 부분이 많다.
아마 관련이 있는거 같다.
클로저를 더 알아보자.
댓글