hoisting, TDZ / parameter, argument

새양말·2023년 3월 28일
0

내일배움캠프TIL

목록 보기
66/74
post-thumbnail

Hoisting 이란? TDZ란?

호이스팅은 자바스크립트 언어에서 나타나는 특징으로, 컴파일 단계에서 변수 및 함수 선언은 코드 내에서 선언된 위치와 관계없이 각각의 스코프 상단으로 이동됩니다. 이로 인해 해당 변수 및 함수 선언은 코드 내에서 나타나는 위치와 관계없이 선언된 스코프 전체에서 사용할 수 있습니다.


자바스크립트 언어에서 TDZ(Temporal Dead Zone)는 변수 생성과 초기화 사이의 기간을 설명하는 데 사용되는 용어로, 이 기간 동안에는 변수에 액세스할 수 없습니다.

TDZ는 ES6의 let 및 const 키워드 도입과 관련이 있습니다. 함수 수준 범위를 갖는 var와 달리 let 및 const블록 수준 범위를 가집니다. 즉, 전체 함수가 아니라 정의된 블록 내에서만 액세스할 수 있습니다.

let 또는 const를 사용하여 블록 범위 변수를 선언하면 TDZ에 생성됩니다. 즉, 초기화되기 전에 변수에 액세스하려고 하면 ReferenceError가 발생합니다. 변수는 프로그램 실행이 선언된 줄에 도달할 때 초기화될 때까지 "죽은" 상태입니다.

var, function 선언은 TDZ에 영향을 받지 않습니다. 이것들은 현재 스코프에서 호이스팅 되기 때문입니다.

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

프로그래밍에서 매개변수는 함수 정의의 입력에 대한 자리 표시자이고 인수는 호출될 때 함수에 전달되는 실제 값 또는 참조입니다.

매개변수는 함수가 호출될 때 함수에 전달될 값을 나타내는 함수 정의의 변수 또는 자리 표시자입니다. 이것은 값이나 참조를 담고 있는 컨테이너와 같지만 매개변수의 값은 함수가 인수와 함께 호출될 때까지 결정되지 않습니다.

반면 인수는 호출될 때 함수에 전달되는 실제 값 또는 참조입니다. 함수가 호출되면 인수로 전달된 값 또는 참조가 함수에 정의된 해당 매개변수에 할당됩니다.

function multiply(num1, num2) {
  return num1 * num2;
}

이 함수에서 num1 및 num2는 매개변수입니다. 함수가 호출될 때 실제 값으로 대체되는 자리 표시자와 같습니다. 이 함수를 호출하려면 다음과 같이 매개변수에 대한 인수를 제공해야 합니다.

const result = multiply(5, 10);

이 예에서 5 및 10은 함수에 입력으로 전달되는 인수입니다. 그런 다음 함수는 이러한 값을 함께 곱하고 변수 result에 할당된 결과를 반환합니다.

profile
매번 기합넣는 양말

0개의 댓글