Arguments Passing

ECMAScript의 함수 매개변수는 모두 값으로 전달됩니다. 함수 외부에 있는 값은 함수 내부의 매개변수에 복사되는데, 이는 변수 사이에서 값을 복사하는 것과 마찬가지입니다. 값이 원시 값이라면 변수 사이에서 원시 값을 복사하는 것과 마찬가지이며 참조 값일 때도 변수 사이에서 참조 값을 복사하는 것과 마찬가지입니다. 개발자들이 자주 혼란스러워 하는 부분이 이 부분입니다. 변수는 값으로도, 참조로도 접근할 수 있지만 매개변수는 오직 값으로만 전달됩니다.

매개변수를 값 형태로 넘기면 해당 값은 지역 변수에 복사됩니다. 즉 이름 붙은 매개변수로 복사되며 ECMAScript에서는 arguments 객체의 한 자리를 차지합니다. 매개변수를 참조 형태로 넘기면 메모리 상의 값의 위치가 지역변수에 저장되므로 지역 변수를 변경하면 함수 바깥에도 해당 변경 내용이 반영됩니다.