Scope

sohyeon kim·2022년 4월 15일
0

React & Javascript

목록 보기
12/41

스코프(Scope)란?

scope를 변역하면 '범위'를 뜻한다. 즉 스코프란 '변수에 접근할 수 있는 범위'이다.


스코프에는 2가지 타입이 있다. 바로 전역(global)지역(local)이다.

전역 스코프(Global Scope)는 말 그대로 전역에 선언되어 있어 어느 곳에서든지 해당 변수에 접근할 수 있다는 의미이다.
지역 스코프(Local Scope)는 해당 지역에서만 접근할 수 있어 지역을 벗어난 곳에선 접근할 수 없다.

자바스크립트에서 함수를 선언할 때마다 새로운 스코프를 생성하게 된다. 함수 몸체에 선언한 변수는 해당 함수 몸체 안에서만 접근가능한데 이것을 함수 스코프이고 이걸 지역 스코프라고 할 수 있다.

const a = 1; // 전역 스코프

function print(){ // 지역 스코프
	const a = 2;
	console.log(a);
}

print();  // 2
console.log(a) // 1

print 함수에서 console.log(a) 는 a를 출력하기 위해 자신의 함수 스코프 안에 변수 a 가 있는지 찾는다. 그럼 const a = 2를 찾으면 2를 console에 출력한다.

Q. 만약 print 함수 안의 변수 a의 선언을 지운다면 console 엔 어떤 값이 출력될까?
Q. 함수 스코프 안에 a가 존재하지 않으니까 a가 선언되어 있지 않다는 에러를 출력할까?

const a = 1; //전역 스코프

function print(){ //함수 스코프
	console.log(a)
}

print(); //1 

결과는 전역 스코프에 선언되어 있는 a의 값인 1이 출력된다. 이는 scope chain에 의해 일어나는 현상이다. 현재 자신의 scope에 사용하고자 하는 변수가 없다면 scope chain을 통해 해당 변수를 찾게된다.

profile
slow but sure

0개의 댓글