250x250
Notice
Recent Posts
Recent Comments
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

진스

호이스팅(Hoisting)? 스코프? TDZ? 본문

JavaScript

호이스팅(Hoisting)? 스코프? TDZ?

입방정 2022. 5. 17. 11:52
728x90

 호이스팅(Hoisting)의 개념 

- 함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것을 말한다.

- var 변수 선언함수선언문에서 호이스팅이 일어난다.

- let/const 변수 선언도 호이스팅은 되지만 TDZ 의해 ReferenceError가 발생한다.

- 함수표현식은 호이스팅이 일어나지 않음

 

 

 함수표현식보다 함수선언문을 더 자주 사용하자.

 


 

TDZ(Temporal Dead Zone)?

일시적인 사각지대란 뜻, 스코프의 시작 지점부터 초기화 시작 지점까지의 구간

 - var는 선언과 초기화를 동시에 하므로 undefined/

 - let는  선언과 초기화가 분리되어 참조 에러(ReferenceError)

 - const 선언+초기화+할당 동시에 해야 에러가안남 const name = jin 

javascript에서의 변수는 선언, 초기화, 할당이라는 3가지 단계의 걸쳐서 생성

   var myname; // "변수선언"
  undefined// 초기화 undefined로 초기화
  myname = "jin"; // "할당"

 

 

스코프란(Scope)?

‘범위’라는 뜻. 즉, 스코프(Scope)란 ‘변수에 접근할 수 있는 범위’라고 할 수 있는데요.

자바스크립트에선 스코프는 2가지 타입이 있습니다.

바로 global(전역)과 local(지역) 

var a = 1; // 전역 스코프
function print() { // 지역(함수) 스코프
 var a = 111;
 console.log(a);
}
print();
console.log(a);
728x90

'JavaScript' 카테고리의 다른 글

숫자, method(Number, Math)  (0) 2022.05.17
객체 메소드 Obejct.~()  (0) 2022.05.17
함수기초  (0) 2022.05.11
querySelector , getElementById , getElementsByClassName 차이점  (0) 2022.03.23
제일 하단 스크롤(scrollTop)값 구하기  (0) 2022.03.22
Comments