TIL 96. TDZ란?

isk·2023년 3월 29일
0

TIL

목록 보기
97/122
post-custom-banner

TDZ란?

TDZ(Temporal Dead Zone)는 변수가 선언되기 전에 접근하려 할 때 발생하는 일시적인 상태를 의미

let과 const 키워드로 선언된 변수는 호이스팅 되지만, 초기화되기 전까지는 접근할 수 없음
변수에 접근하려고 하면 TDZ에 놓이기 때문에 ReferenceError가 발생

TDZ 특징

  1. TDZ는 let과 const 키워드로 선언된 변수에만 적용.
  2. TDZ는 변수가 선언되기 전까지만 존재. 변수가 선언된 이후에는 TDZ 사라짐.
  3. TDZ에서는 변수를 참조할 수 없으며, 이때 변수에 접근하면 ReferenceError가 발생
  4. TDZ에서는 변수에 값을 할당할 수 없음. 변수를 초기화하기 전까지는 값을 할당할 수 없음
  5. TDZ에서는 typeof 연산자를 사용해 변수의 타입을 확인할 수 있음.
    하지만, 변수에 접근하면 ReferenceError가 발생.
console.log(x);//ReferenceError: Cannot access 'x' before initialization
let x = 10;

위 코드에서는 let x = 10 이전에 console.log(x) 가 실행되고 있습니다. 이는 TDZ 때문입니다. let 변수는 호이스트되지만, 초기화되기 전까지는 접근할 수 없습니다. 따라서 위 코드는 에러가 발생합니다.


파라미터(parameter)와 아규먼트(argument)

파라미터(parameter)와 아규먼트(argument) 개념은 함수(function)를 정의하고 호출할 때 사용됩니다.

파라미터는 함수가 선언될 때 괄호 내에 나열된 변수들을 의미합니다.
예를 들어, 다음 함수에서 ab는 파라미터입니다.

function addNumbers(a, b) {
  return a + b;

아규먼트는 함수가 호출될 때 전달되는 값들을 의미합니다. 예를 들어, 다음 함수 호출에서 23은 아규먼트입니다.

const result = addNumbers(2, 3);

파라미터와 아규먼트는 다음과 같은 세부사항에서 차이가 있습니다.

  • 파라미터는 함수를 정의할 때 사용되는 변수이고, 아규먼트는 함수를 호출할 때 전달되는 값입니다.
  • 파라미터는 함수 내부에서 변수명으로 사용되며, 해당 변수명으로 값을 참조할 수 있습니다. 아규먼트는 함수 호출 시 전달된 값이므로, 함수 내부에서 그 값을 사용할 수 있습니다.
  • 파라미터는 함수 정의 시 선언될 때 데이터 타입을 명시할 수 있지만, 아규먼트는 데이터 타입을 명시하지 않습니다.
post-custom-banner

0개의 댓글