자바스크립트에서 함수를 사용하는 방법은 매우 직관적이다. 물론 매우 복잡하게 짜여진 코드를
function aFunc() {
alert('aa');
}

위 함수는 전달인자 없이 단독으로 사용된다.

function aFunc(o) {
alert(o);
}

위의 경우는 전달인자 1개를 받아서 함수내에서 사용한다. 인자가 매우 적을 경우 문제가 별로 없겠지만, 인자가 여러개 생기다 보면 혼동스러운 경우를 만나게 된다.

function aFunc(a,b,c,d,e,f,g,h) {
// code
}

위의 경우처럼 사용하게 되면 함수내부에서 실수를 범하기 쉬워진다. 예제를 하나 보자.

var mySY = function(el,content,name,width,height,left,top,position,zindex,parent){
this.el = el;
this.content = content;
this.name = name;
this.width = width;
this.height = height;
this.left = left;
this.top = top;
this.position = position;
this.zindex = zindex;
this.parent = parent;
}

위와 같이 전달인자를 여러개 받아서 사용하게 될 때 내부적으로 문제가 생길 소지가 많다. 이를 조금 쉽게 해결해 보자.

function aFunc() {
alert(arguments[0]);
}
aFunc(1);

위의 결과는 1을 출력한다. 이유는 자바스크립트에서 제공하는 Arguments 객체를 참조하는 프로퍼티인 arguments 가 있기 때문인데, 너무 어렵게 생각하지 말고 arguments 라는 프로퍼티는 함수내에서 전달인자를 참조한다고 알아두자.

function aFunc() {
alert(arguments[0] + ' ' + arguments[1]);
}
aFunc(1);

위의 경우 1 undefined 가 출력된다. 전달받지 않은 인자를 출력하려고 할 경우이다. 또한 이 arguments 에는 length 프로퍼티가 존재한다.

function aFunc(str) {
alert(arguments.length);
}
aFunc(1,2,3);

위의 출력은 3이 된다. 이처럼 전달인자를 지정한 경우 str 이나 arguments[0] 으로 받을 수 있으며 뒤에 지정되지 않은 인자는 arguments[1] arguments[2] 처럼 사용할 수 있다.

function aFunc(a,b,c) {
if(!a || !b || !c) return;
}

위의 경우 다음처럼 사용할 수있다.

function aFunc(a,b,c) {
if(arguments.length != 3) return;
}

위와 같이 간단히 사용할 수 있다. arguments 로 사용할 수 있는 또 다른 프로퍼티는 callee 이다. 이는 arguments.callee 로 사용하며 이것을 함수내에서 사용하면 함수 자신을 가리키게 된다. 마찬가지로 여기에도 length 프로퍼티를 사용할 수 있다.

function aFunc(a,b,c) {
if(arguments.length != arguments.callee.length) {
alert(arguments.callee.length + '개의 인자를 전달하시오');
}
}

aFunc(1,2);

실제 전달인자의 갯수와 함수가 받아야 되는 전달인자의 갯수를 비교하는 문장이다.

전달인자를 직접 사용할 수 있다는 것은 큰 장점이지만 이것도 조금 문제가 생길 수도 있다. 함수를 호출하는 지점에서 인자를 정확하게 순서대로 지정해야 된다는 문제가 있는데 이를 해결하고 조금 더 알기 쉽게 사용할 수 있도록 해보자.

function aFunc(arg) {
alert(arg.a + '' + arg.b);
}

aFunc({a : 'hello', b : 'good' });

이제 순서를 일일히 기억할 필요없이 함수의 전달인자를 객체로 받고 이 객체의 프로퍼티를 이용해서 처리를 하면 된다. 좀 더 직관적이며 안정적으로 사용할 수 있겠다. 물론 함수내에서 이 인자들을 이용해서 복잡한 처리를 할 경우는 typeof 를 이용해서 데이터의 타입을 정확하게 구분한 뒤 사용하는 것이 오류를 범하지 않는 방법이 되겠다.

 

 

 

 

 

 

 

출처 : http://dont.pe.kr/tt/4

 

Javascript에는 arguments라는 객체가 있습니다.

함수를 호출할 때 전달되는 인자에 대응되는 배열 형태의 객체입니다.


간단한 사용법은 다음과 같습니다.

닫기

function add ()
{
   var sum = 0;

   for (var i = 0; i < arguments.length; i++)
   {
      sum += arguments[i];
   }

   return sum;
}

function test ()
{
   var sum1 = add(1, 2, 3);

   var sum2 = add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
}

'Javascript' 카테고리의 다른 글

자바스크립트 문자열 함수  (0) 2012.09.17
자바스크립트 parseInt tip  (0) 2012.04.06
자바스크립트 기본 명령어 모음  (0) 2012.01.10
javascript 문자열 처리  (0) 2012.01.10
즐겨찾기 스크립트  (0) 2011.10.11
블로그 이미지

스마트전

,