실행 컨텍스트를 만들면서 외부의 Scope와 내부의 Scope를 설정하는 것을 포스팅했습니다.
이번에는 매개변수는 실행 컨텍스트에서 어떻게 처리되는지에 대해 포스팅하겠습니다.
{key : 값}
형태로 arguments에 삽입된다.[{0:인자1},{1:인자2}]
형태로 저장된다.function get() { return arguments }
console.log(get("A", "B")); //=> ["A","B",메타데아터들]
function get2() {return arguments.filter((v)=>true))
console.log(get("A","B")) //=> 에러! arguments.filter is not a function
arguments 오브젝트 설정이 완료되고 난 뒤, Execution Context 초기화가 이뤄질 때 arguments의 원소들의 value와 매개변수가 순서에 맞게 Mapping된다.
function get(one) { return one; };
get(77, 100); //=> 77
Mapping되면서, Execution Context의 Lexical Env(자세히는, 선언적환경레코드)에 {매개변수 이름 : 인자로 넘어온 값}
형태로 저장된다.
[{0:77}, {1:100}]
형태로 먼저 저장된다.one
과 인자 77
이 mapping되어 선언적 환경 레코드에 {one: 77}
형태로 저장된다.