개발 일기

호이스팅과 TDZ란? parameter와 argument 차이란?

ji_su_04 2023. 3. 30. 12:24

호이스팅과 TDZ란?

  1. 호이스팅이란 함수 안에 있는 선언들을 스코프 상단에 선언하는 것을 의미합니다.
    자바스크립트는 ES6에서 도입된 let, const를 포함하여 모든 선언(var, let, const, function, function*, class)을 호이스팅합니다. 호이스팅(Hoisting)이란, var 선언문이나 function 선언문 등을 해당 스코프의 선두로 옮긴 것처럼 동작하는 특성을 말합니다.
    하지만 let, const 변수 선언과 함수 표현식에서는 호이스팅이 발생하지 않습니다.
  2. Temporal Dead Zone(TDZ)이란 선언 전에 변수를 사용하는 것을 비 허용하는 개념상의 공간입니다.
    TDZ는 const, let, class는 TDZ에 영향을 받습니다. 즉 const, let, class는 선언 전에 변수를 사용하는것을 허용하지 않습니다.
    반대로 var, function, import의 선언은 TDZ의 영향을 받지 않습니다. 특히 var 변수는 선언 전에도 사용할 수 있는 점에서 var 변수 사용을 피해 예기치 못한 오류를 방지하는 것이 좋습니다.

Parameter와 argument의 차이점

 

Parameter는 함수를 정의할 때 사용되는 변수를 의미한다.

Argument는 실제로 함수가 호출될 때, 넘기는 변수값을 의미한다.

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

반응형