TIL : 23.05.09

jin·2023년 5월 9일
0

TIL

목록 보기
32/39
post-thumbnail

23.05.08~ / 취업준비_이력서 스터디, 데일리 과제

Q. Hoisting이란?

코드를 실행하기 전 변수선언/함수선언이 해당 스코프의 최상단으로 끌어올려진 것 같은 현상을 말한다.

자바스크립트의 모든 선언에는 호이스팅이 일어난다.
하지만 let, const, class를 이용한 선언문은 호이스팅이 발생하지 않는 것 처럼 동작한다.

var로 선언한 변수의 경우 호이스팅 시 undefined로 변수를 초기화하는데 반면 letconst로 선언한 변수의 경우 호이스팅 시 변수를 초기화하지 않기 때문이다.

Q. TDZ란?

Temporal Dead Zone/시간상 사각지대
변수가 선언되고 초기화되기까지의 그 사이에 위치하는 사각지대 구간으로 변수가 선언되고 초기화가 이뤄지기 전까지의 구간으로 초기화되지않은 변수가 선언단계와 초기화단계 사이에 잠시 머물러있는 셈이다.

var는 변수 선언 전에 선언단계와 초기화단계를 동시 진행하므로 TDZ가 존재하지 않는다.
따라서 undefined로 호출되는 호이스팅이 이뤄진 후, 초기화 단계에 오면 TDZ상태가 해제된다.

하지만 let, const는 선언단계와 초기화 단계가 분리되어 실행된다.
따라서 선언~초기화 단계 사이에서는 변수에 등록했지만 메모리가 할당되지않은 상태라 reference error가 발생한다. 이러한 사각지대를 TDZ라고 한다.

Q. parameter와 argument의 차이?

인수, 인자'는 의미로 혼용되어 사용되고 있지만
Parameter는 함수를 정의할 때 사용되는 변수를 의미하고
Argument는 실제로 함수가 호출될 때, 넘기는 변수값을 의미한다.

즉, Parameter는 매개변수이고 함수에서 정의된 변수와 실제 매개변수값(인자.인수값)을 변수로 넘겨줄때 사용되고,
Argument는 위 괄호 안의 인자, 인수를 의미한다

profile
。˚⋆。˚ ☁︎˚。⋆。˚☽˚。⋆˚ ☁︎˚

0개의 댓글