node.js javascript 스코프(유효 범위)와 호이스팅(끌어올림)

scope에 대해서 알.아.보.자

 

1. 전역(global)과 지역(local)

 

전역 : 변수가 중괄호{} 바깥에 선언되었다면 전역스코프, 어디에서든 해당 변수 사용가능

 

지역 : 변수가 함수내에 선언되어있으며, 함수 밖에서는 해당 변수를 사용 할 수 없음 

 

 

2. 유효 범위 체인

함수안에 함수가 있는경우

- 제일 안쪽에 있는 함수는 a라는 변수를 찾을때 자신의 스코프에서 변수a를 찾음

- 없으면 상위 스코프(그다음으로 감싸고 있는 함수)에서 변수a를 찾음

- 없으면 전역 스코프에서 변수a를 찾음

 

이렇게 체인처럼 꼬리를 물고, 상위 스코프를 참조하기때문에 스코프 체인(유효범위체인)이라고 함

 

 

3. 렉시컬 스코프

 

함수를 어디서 호출하는지가 아니라, 어떤 스코프에서 선언하였는지에 따라 결정된다.

 

예시

var text = 'global';

function foo() {
	console.log(text);
}

function bar() {
	var text = 'bar';
	foo();
}

bar(); // 무엇이 출력될까요?

 

 

호이스팅에 대해 알.아.보.자

 

끌러올리기라는 뜻의 호이스팅. 쉽게 말해서 선언을 하면 선언한 것들이 위로 끌려간다고 보면됨

 

예시

function foo() {
	console.log(a);  // undefined
	var a = 100;
	console.log(a);  // 100
}

//위 메소드는 var a가 호이스팅되어서 아래와 같다고 볼수있음

function foo() {
	var a;
	console.log(a);  // undefined
	var a = 100;
	console.log(a);  // 100
}

foo();

 

 

이 호이스팅은 혼란스러울 수 있기 때문에, 함수를 호출하기 전에 최상단에 선언하는 습관을 들여야 합니다.

댓글

Designed by JB FACTORY