[기술면접 스터디] 2일차

Chan·2023년 2월 22일
0

기술면접스터디

목록 보기
2/6
post-thumbnail

Hoisting이란? TDZ란?

코드의 흐름은 기본적으로 위에서 아래로 진행된다.
흐름상 아직 정의하지 않은 변수를 부를 때가 있는데 상단에서 작성한 함수 내에 사용하고 있는 값이 해당 함수보다 하단에 선언되고 있을 수 있다.
JavaScript에서 변수의 생성 단계는 선언 → 초기화 → 할당 의 3단계가 있다.
Hoisting이란 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미하는데 변수를 선언하고 초기화했을 때 선언 부분이 최상단으로 끌어올려지는 현상이다.
JavaScript에서 변수는 var, let, const가 있는데 var의 경우 변수를 선언하고 초기화하는 과정이 동시에 일어나서 Hoisting 현상이 발생한다.
반면 let과 const의 경우에는 선언과 초기화 단계가 동시에 일어나지 않고 실행 시점에서 실제 선언을 만날 때 초기화가 이루어 진다.
그 사이의 시간을 일시적 사각지대 즉 TDZ(Temporary Dead Zone)이라고 하며 실행 컨텍스트에 변수가 선언은 되었으나 메모리가 할당되지 않아 ReferenceError가 발생한다.

💡 실행 컨텍스트란?
실행할 코드에 제공할 환경 정보들을 모아놓은 객체
코드의 실행 환경
자바스크립트가 왜 그렇게 동작하는지를 설명하는 것
자바스크립트 코드가 실행되고 연산되는 범위를 나타내는 추상적인 개념
- 코드를 작성하고 실행한다면 실행 컨텍스트 내부에서 실행되고 있는 것이다.
- 즉 코드들이 실행되기 위한 환경이자 하나의 박스이자 컨테이너라고 볼 수 있다.

parameter와 argument의 차이

parameter(매개변수)와 argument(인수)의 차이점은 쓰임에 있다.
함수를 정의할 때 사용되는 변수를 매개변수, 실제로 함수가 호출될 때 넘기는 변수값을 인수라고 할 수 있다.

function sum(num1, num2) {  // parameter(매개변수)
	return num1 + num2;
}

sum(1, 2); // Argument(인수)
profile
드디어 신발 신은 프론트엔드 개발자

0개의 댓글