Coding/Javascript

파라미터 갯수가 가변적인 함수만들기

realizm 2015. 10. 29. 21:59


갑자기 일을 하다가 파라미터 갯수가 가변적인 함수를 만들일이 생겼습니다.


저 같은 경우 비슷한 일이 발생할 때 caller쪽에서 Array로 넘겨주는 식으로 제작을 하는데...


이번에는 caller쪽을 손대기가 굉장히 애매한 상황이었구요.


정규식을 잘 써서 추출을 하면 가능할 것도 같았습니다만


정규식이 너무 복잡해질 것 같았고 제가 복잡한 정규식은 잘못쓴는 지라 ^^;


인터넷을 찾아봤더랩니다.


이럴땐 arguments객체를 쓰면 좋습니다.

(개발을 몇 년을 했는데 이런 객체가 있는지 처음 알았습니다 ㅠ.ㅠ);



arguments객체는 Array와 유사하지만 Array객체는 아닙니다.


따라서 Array.pop()과 같은 함수를 사용할 수는 없습니다.



인터넷에 보면 

이런 코드로 Array로 변환하는 소개가 많이 나오는데요.

코드가 몇줄 줄긴 합니다만 최적화 문제가 있다고 하니..


그냥 배열을 새로 만들어서 집어넣는게 좋다고 합니다.


그 외에도 


arguments.callee

arguments.caller


같은 속성이 있습니다.


callee는 arguments를 사용하는 함수 자신이고, caller는 해당 함수를 호출한 함수가 되겠지요.

(실제로는 안써봤습니다만 ^^);


이 내용은 MDN(모질라 개발자 네트워크)의 Function.arguments 레퍼런스 문서를 토대로 작성되었습니다.