-
함수의 가변인자 aruments 콜렉션카테고리 없음 2022. 4. 3. 11:59
그림1 과 같이 지정된 파라미터 갯수를 넘어서 파라미터를 넣어서 함수를 호출해도 오류가 발생하지 않는다.
왜냐하면 JavaScript는 특이하게도 함수의 파라미터는 의미가 없다.
파라미터 즉 매개변수가 값을 받는 그릇 으로 역할을 하지 않는다. JavaScript는 데이터가 모두 객체이기 때문에,
매개변수 x와 y는 넘어올 값을 참조하는 이름일 뿐이다. 담는 그릇이 아니다. 그래서 참조하는 것으로 x,y가 있고, 넘겨지는 매개변수는 다 가변으로 받을 수 있는 collection을 가지고 있다.
functrion이라고 하는 객체 안쪽에 사용 할 수 있는 arguments라고 하는 collection이 있다. arguments는 넘겨진 매개변수를 다 차곡차곡 쌓아 놓는다. arguments는 가변적으로 수집할 수 있는 능력이 있기 때문에 넘겨진 것이 몇개 이던 상관이 없다.
index를 이용해서 넘겨진 매개변수중에 원하는 인자를 뽑을 수도 있다. JavaScript의 함수에서 매개변수는 arguments에 저장되는 인자에 추가적인 이름(예: x , y)가 더 붙여진 것이다. 즉 매개변수 x는 arguments[0]에 대한 인자인데, 매개변수 하는 이름이 더 생긴것이다. 그렇기 때문에 매개변수에 쓰는 변수이름은 arguments인자에 추가적인 이름을 더 부여 하고 싶을 때 사용하는 것이다.
JavaScript의 함수는 인자에대한 개수의 정의가 분명하지 않다.
[출처 - https://youtu.be/e3nBLsKMy9M ]