📌
Javascript 생활코딩
  • 자바스크립트
  • 자바스크립트 기본
    • 숫자와 문자
    • 변수
    • 주석, 줄바꿈과 여백
    • 조건문 - 기본
    • 조건문 - 비교연산자
    • 조건문 - 논리연산자
    • 조건문 - boolean의 대체재
    • 반복문 - 기본 (while,for)
    • 반복문 - 제어(break, continue)
    • 반복문 - 중첩
    • 함수
    • 배열 - 기본
    • 배열 - 조작, 제거 및 정렬 메서드
    • 객체 - 기본
    • 객체 - 반복문
    • 모듈
    • UI와 API 그리고 문서보는 법
    • 정규표현식
  • 함수지향
    • 유효범위
    • 값으로서의 함수와 콜백
    • 클로저
    • arguments
    • 함수의 호출
  • 객체지향
    • 객체지향 프로그래밍
    • 생성자와 new
    • 전역객체
    • this
    • 상속
    • prototype
    • 표준 내장 객체의 확장
    • Object
    • 데이터 타입
    • 참조
  • 패턴
    • 재귀함수
Powered by GitBook
On this page
  • arguments
  • 매개변수의 수

Was this helpful?

  1. 함수지향

arguments

arguments

함수에는 arguments라는 변수에 담긴 숨겨진 유사 배열이 있습니다. 이 배열에는 함수를 호출할 때 입력한 인자가 담겨있습니다.

arguments는 사실 배열은 아니다. 실제로는 arguments 객체의 인스턴스다.

function sum(){
    var i, _sum = 0;    
    for(i = 0; i < arguments.length; i++){
        document.write(i+' : '+arguments[i]+'<br />');
        _sum += arguments[i];
    }   
    return _sum;
}
document.write('result : ' + sum(1,2,3,4));

//1+2+3+4=10
//10

함수 sum은 인자로 전달된 값을 모두 더해서 리턴하는 함수입니다. 그런데 1행처럼 함수 sum은 인자에 대한 정의하가 없습니다. 하지만 마지막 라인에서는 4개의 인자를 함수 sum으로 전달하고 있습니다. 함수의 정의부분에서 인자에 대한 구현이 없음에도 인자를 전달 할 수 있는 것은 왜 그럴까요? 그것은 arguments라는 특수한 배열이 있기 때문입니다.

arguments는 함수안에서 사용할 수 있도록 그 이름이나 특성이 약속되어 있는 일종의 배열입니다. arguments[0]은 함수로 전달된 첫번째 인자를 알아낼 수 있습니다. 또 arguments.length를 이용해서 함수로 전달된 인자의 개수를 알아낼 수도 있습니다. 이러한 특성에 반복문을 결합하면 함수로 전달된 인자의 값을 순차적으로 가져올 수 있습니다.그 값을 더해서 리턴하면 인자로 전달된 값에 대한 총합을 구하는 함수를 만들 수 있습니다.

매개변수의 수

매개변수와 관련된 두가지 수가 있다.

  1. 함수 length: 함수에 정의된 인자의 수를 의미한다.

  2. arguments.length: 함수로 전달된 실제 인자의 수를 의미한다.

function zero(){
    console.log(
        'zero.length', zero.length,
        'arguments', arguments.length
    );
}
function one(arg1){
    console.log(
        'one.length', one.length,
        'arguments', arguments.length
    );
}
function two(arg1, arg2){
    console.log(
        'two.length', two.length,
        'arguments', arguments.length
    );
}
zero(); // zero.length 0 arguments 0 
one('val1', 'val2');  // one.length 1 arguments 2 
two('val1');  // two.length 2 arguments 1
Previous클로저Next함수의 호출

Last updated 4 years ago

Was this helpful?