[자바스크립트] 스코프

박지원·2023년 3월 23일

1차 스터디

목록 보기
6/13

▷ 스코프

스코프는 간단히 말해서 식별자의 유효 범위를 결정하는 도구이다.

var키워드와 let, const키워드의 적용 범위를 스코프로 구분한다.

var키워드로 선언된 변수는 함수의 {}( 블록 ) 안에서만 지역 변수로 인식되고, 이를 제외하고는 어디에서 선언하던지 전역 변수로 인식된다.

var은 함수 레벨 스코프를 따른다.

반면에 let, const키워드로 선언된 변수는 for, if, while 등을 포함하여 모든 블록 안에서의 선언이 지역 변수로 인식된다.

let, const는 블록 레벨 스코프를 따른다.


▷ 렉시컬 스코프

렉시컬 스코프는 상위 스코프의 결정 방식 중 하나를 의미하고, 자바스크립트는 이를 따른다.

함수를 정의하고 호출하는 코드가 있다고 가정했을 때, 프로그래밍 언어는 함수의 상위 스코프 결정에 있어서 이를 정의하는 방식이 필요하다.

스코프 결정 방식은 함수가 호출되는 시점으로 상위 스코프를 결정하는 동적 스코프 방식과 함수가 정의되는 시점으로 상위 스코프를 결정하는 렉시컬 스코프방식이 있다.

자바스크립트는 렉시컬 스코프 방식을 따르기 때문에, 함수의 호출 위치는 상위 스코프 결정에 있어 아무 영향이 없다.

따라서 함수가 정의가 실행 될 때 함수의 상위 스코프가 결정되고, 생성된 함수 객체는 결정된 상위 스코프를 같이 저장한다. 그래서 함수는 호출 될 때 마다 미리 저장된 상위 스코프를 참조하여 함수를 실행한다.

상위스코프는 선언 위치에 따라 결정 된다.

profile
NodeJS 백엔드

0개의 댓글