개발자

[JS] arguments는 어째서 유사 배열 객체인가요?

2022년 11월 25일조회 238

안녕하세요, Javascript에서 함수의 인자는 arguments라는 배열로 알고 있습니다. 하지만 실제 배열이 아니라 유사 배열 객체임을 알게 됐는데요, arguments는 어째서 유사 배열 객체 형태를 띠는건가요? 이로 인해 얻는 이득이 뭔지도 궁금합니다! 감사합니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

손정현님의 프로필 사진

안녕하세요! 저도 이 질문을 보기 전까지는 arguments에 대한 아무 생각이 없었는데요. 궁금해서 한 번 찾아봤습니다 :) 우선 가장 그럴싸한 답변을 stackoverflow에서 찾았는데요. (무려 12년전 글이네요) (https://stackoverflow.com/questions/3242485/why-isnt-a-functions-arguments-object-an-array-in-javascript) 이 답변에 따르면, arguments는 초기 ECMAScript 표준이 발표됐을 때부터 고려된 기능이라고 합니다. 그리고 그때는 Array.prototype 이 상당히 단순했고 제한적이었다고 하네요. 그래서 arguments는 Object.prototype을 상속받아서 생성하고, 필요한 기능만 추가했다고 합니다. 이후 ECMAScript은 발전을 했고 Array.prototype도 여러가지 기능이 추가되면서 저희가 알고 있는 것이 되었는데요. arguments를 Array로 바꾸자는 제안도 ES5 제안서에 있었지만, ES3과의 하위 호환성을 고려해서 거절되었다고 하네요.

profile picture

익명

작성자

2022년 11월 27일

친절한 답변 감사합니다!! 도움이 됐어요

profile picture

익명

작성자

2022년 11월 27일

.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!