본문 바로가기

🌼 TIL

🍈 [TIL] Hoisting, TDZ / parameter와 argument의 차이

질문 1)

Hoisitng 이란? TDZ란?

 

답변)

호이스팅이란 자바스크립트에서 코드를 위에서 아래로 읽어가기 전 변수와 함수, 클래스 등의 선언부를 먼저 읽어들이는 작업을 말합니다.

프로그램 중간에서 변수나 함수를 선언하더라도 프로그램 처음에 선언된 것처럼 다른 문장앞에 생성되고 이를 변수 선언의 끌어올림인 Hoisting이라고 합니다.

사실 호이스팅은 정말 변수나 함수등을 위로 끌어올리는것이 아니라, 변수나 함수를 선언 이전에 사용할 수 있기 때문에 끌어 올려지는 것처럼 보이는 것입니다.

일단 변수 생성과정은 크게 

1. 변수선언

2. 초기화 (undefined)

3. 할당 

3가지 과정이 있는데 var는 호이스팅 과정에서 변수선언, 초기화(undefined)과정까지 이루어지지만 let,const는 변수선언 과정까지만 이루어져서 let,const는 초기화가 안되어 있는 상태이기 때문에 TDZ에 걸려 참조에러가 발생합니다.

TDZ란 일시적인 사각지대로 변수를 사용하는것을 비허용하는 개념상의 공간입니다. 

TDZ에 있는 변수 객체란, 선언은 되어 있지만 아직 초기화 되지 않아서 변수에 담길 값을 위한 공간이 메모리에 할당되지 않은 상태임을 알수 있습니다.


질문 2)

parameter와 argument의 차이에 대해 설명해주세요.

 

답변)

먼저 parameter는 함수를 정의할 때 사용되는 변수를 의미하고, Argument는 실제로 함수가 호출될 때, 넘기는 변수값을 의미합니다.

이 두개의 차이점에는 쓰임의 차이에 있습니다. 

parameter 즉, 매개변수는 메소드 선언의 변수 목록이며, argument 즉, 인수는 메소드가 호출될 때 전달되는 실제 값입니다.

 

 

 

예)

function sum(number1,number2) {
	return number1 + number2 ;
}

sum(4,3)

여기서 매개변수(parameter) = (number1, number2) 이고,

인수(argument) = (4,3) 입니다.

 

 

 

 

 

 

 

 

 

 

참고 ) https://ingg.dev/hoisting/#:~:text=TDZ%EB%9E%80%20%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C%3F-,TDZ%20(Temporal%20Dead%20Zone)%EB%9E%80%3F,initialization%20%EC%97%90%EB%9F%AC%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%9C%EB%8B%A4. 

 

[JS] 호이스팅과 TDZ에 대하여

js 호이스팅(Hoisting)이란 변수나 함수를 선언했을 때 코드 범위(scope) 내의 최상단으로 끌어올려지는 것처럼 보이는 현상이다. 흔히 var 는 호이스팅이 발생하며, const 와 let 은 발생하지 않는다고

ingg.dev

https://www.youtube.com/watch?v=fLZ-bKT4sFs 

https://7942yongdae.tistory.com/155

 

매개변수(Parameter)와 인수(Argument)의 차이점은 무엇일까?

매개변수와 인수는 프로그래밍에서 자주 사용되는 용어입니다. 영어로는 Parameter(매개변수), Argument(인수)로 정의되고 쓰이는데요. 프로그래밍을 할 때 자주 쓰이는 용어인 만큼 명확하게 구분하

7942yongdae.tistory.com