1)
호이스팅
은 변수나 함수 선언이 최상단으로 끌어올려지는 현상입니다.
코드 내에서 변수와 함수가 선언되기 전에도 참조될 수 있다는것을 의미합니다.
var
로 선언하면 호이스팅 시 undefined로 변수를 초기화하는 반면let
과const
로 선언한 변수의 경우 호이스팅 시 변수를 초기화 하지 않습니다.2)
TDZ
는 "Temporal Dead Zone" 이라는 뜻으로 일시적인 사각지대로, 해당 범위 내에서 변수가 선언되는 지점의 사이의 기간을 나타냅니다.
TDZ에 접근하게 되면 ReferenceError 에러가 발생합니다.
const, let
은 초기화되 전까지 TDZ에 머물러 있기 때문에 레퍼런스 에러가 발생합니다.
console.log(x); // undefined
var x = 5;
console.log(x); /// 5
console.log(b); //Uncaught ReferenceError: Cannot access 'b' before initialization
let b = 1;
console.log(b);
parameter
는 매개변수로 함수를 정의할 때 사용되는 변수이고argument
는 인수로 실제로 함수가 호출될 때 넘기는 변수값입니다.
매개변수
는 메서드 선언의 변수 목록이고인수
는 메서드가 호출될 때 전달되는 실제 값입니다.