JS #5 :: 스코프(Scope)와 호이스팅(Hoisting)

해다·2022년 3월 20일
0

JavaScript & TypeScript

목록 보기
4/10
post-thumbnail

🙊 잘못 기재한 부분이 있다면 댓글로 남겨주세요!


💻스코프(Scope)

스코프는 변수와 상수, 매개변수가 언제 어디서 정의되는지 결정한다. 이것이 어디에 선언되었는지에 따라 다른 코드가 자신을 참조할 수 있는지 결정된다.

function plus(n){
  	return n+n
}
plus(1) // 2
n				// ReferenceError: n is not defined
// 여기서 n의 스코프는 함수 plus이다.

💻호이스팅(Hoisting)

호이스팅은 var로 선언한 변수의 선언문을 끌어올린다는 뜻이다. 자바스크립트는 함수나 전역 스코프 전체를 살펴보고 변수를 var로 선언하여 맨 위로 끌어올린다. 할당이 끌려올려지는 것이 아니라 선언이 끌어 올려진다는 것이 여기서 중요한 부분이다.

var a		// 선언이 끌어올려진다.
a				//undefined
a = 3
a				//3

👾함수 호이스팅

var로 선언된 변수와 마찬가지로 함수 선언도 스코프 맨 위로 끌어올릴 수 있다.
함수 선언식의 경우 호이스팅이 발생해서 함수를 최상단으로 끌어올려서 먼저 호출하더라도 정상적으로 동작한다.
함수 표현식의 경우 선언과 할당의 분리가 발생하여 오류가 발생한다.

profile
잘하는 건 아닌데 포기하진 않을거야

0개의 댓글