개발 일기
호이스팅과 TDZ란? parameter와 argument 차이란?
ji_su_04
2023. 3. 30. 12:24
호이스팅과 TDZ란?
- 호이스팅이란 함수 안에 있는 선언들을 스코프 상단에 선언하는 것을 의미합니다.
자바스크립트는 ES6에서 도입된 let, const를 포함하여 모든 선언(var, let, const, function, function*, class)을 호이스팅합니다. 호이스팅(Hoisting)이란, var 선언문이나 function 선언문 등을 해당 스코프의 선두로 옮긴 것처럼 동작하는 특성을 말합니다.
하지만 let, const 변수 선언과 함수 표현식에서는 호이스팅이 발생하지 않습니다. - Temporal Dead Zone(TDZ)이란 선언 전에 변수를 사용하는 것을 비 허용하는 개념상의 공간입니다.
TDZ는 const, let, class는 TDZ에 영향을 받습니다. 즉 const, let, class는 선언 전에 변수를 사용하는것을 허용하지 않습니다.
반대로 var, function, import의 선언은 TDZ의 영향을 받지 않습니다. 특히 var 변수는 선언 전에도 사용할 수 있는 점에서 var 변수 사용을 피해 예기치 못한 오류를 방지하는 것이 좋습니다.
Parameter와 argument의 차이점
Parameter는 함수를 정의할 때 사용되는 변수를 의미한다.
Argument는 실제로 함수가 호출될 때, 넘기는 변수값을 의미한다.
즉, parameter는 메소드 선언의 변수 목록이며, argument는 메소드가 호출될 때 전달되는 실제 값이다.
반응형