진스
호이스팅(Hoisting)? 스코프? TDZ? 본문
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