[ JavaScript ] 자바스크립트 기본 문법 | 자바스크립트 arguments | function length

2021. 2. 3. 23:57·Archive/Develop
728x90
반응형

이미지 출처 :   https://commons.wikimedia.org/wiki/File:JavaScript-logo.png

 

 

 

 

 

해당 포스팅은 생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅임을 미리 알립니다.

 

 

 


 

 

자바스크립트 기본 문법  ::  arguments

 

 

 

함수에는 arguments라는 변수에 담긴 숨겨진 유사 배열이 있습니다.

 

이 배열에는 함수를 호출할 때 입력한 인자가 담겨있습니다.

 

 

arguments는 함수안에서 사용할 수 있도록 그 이름이나 특성이 약속되어 있는 일종의 배열입니다.

 

 

 

예제로 살펴보도록 하겠습니다.

 

 

 

 

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

 

 

 

 

 

 

함수 sum은 인자로 전달된 값을 모두 더해서 리턴하는 함수입니다.

 

그런데 1행처럼 함수 sum은 인자에 대한 정의가 없죠.

 

하지만 마지막 라인에서는 4개의 인자를 함수 sum으로 전달하고 있는 것을 확인할 수 있습니다.

 

함수의 정의 부분에서 인자에 대한 구현이 없음에도 인자를 전달 할 수 있는 것은

 

arguments라는 특수한 배열이 있기 때문입니다.

 

 

arguments[0]은 함수로 전달된 첫번째 인자를 알아낼 수 있습니다.

 

또 arguments.length를 이용해서 함수로 전달된 인자의 개수를 알아낼 수도 있습니다.

 

 

이러한 특성에 반복문을 결합하면 함수로 전달된 인자의 값을 순차적으로 가져올 수 있겠죠.

 

그 값을 더해서 리턴하면 인자로 전달된 값에 대한 총합을 구하는 함수를 만들 수 있게되는 것입니다.

 

 

참고로 arguments는 사실 배열은 아니고, 실제로는 arguments 객체의 인스턴스라고 할 수 있습니다.

 

 

 

자바스크립트 기본 문법  ::  function.length

 

 

 

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

 

하나는 함수.length이고,

 

다른 하나는 arguments.length 입니다.

 

 

arguments.length는 함수로 전달된 실제 인자의 수를 의미하고,

함수.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
    );
}
one('val1', 'val2');  // one.length 1 arguments 2 
two('val1');  // two.length 2 arguments 1

 

 

one.length 는 파라미터의 개수이고,

arguments.length 는 인자의 개수입니다.

 

따라서 아래 그림과 같은 결과가 출력되는 것을 확인할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ JavaScript ] 객체 지향 프로그래밍 | 추상화란 무엇인가  (0) 2021.02.04
[ JavaScript ] 자바스크립트 기본 문법 | 함수의 호출(apply)  (0) 2021.02.04
[ JavaScript ] 자바스크립트 기본 문법 | 내장 함수 & 클로저 개념| Private Variable  (0) 2021.02.03
[ JavaScript ] 자바스크립트 콜백 & 비동기처리  (0) 2021.02.03
[ JavaScript ] 자바스크립트 함수 지향 | 메소드와 함수 차이 | 함수 리턴값 | 함수 배열  (0) 2021.02.03
'Archive/Develop' 카테고리의 다른 글
  • [ JavaScript ] 객체 지향 프로그래밍 | 추상화란 무엇인가
  • [ JavaScript ] 자바스크립트 기본 문법 | 함수의 호출(apply)
  • [ JavaScript ] 자바스크립트 기본 문법 | 내장 함수 & 클로저 개념| Private Variable
  • [ JavaScript ] 자바스크립트 콜백 & 비동기처리
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    보안뉴스
    장고
    코드업
    docker
    코드업 파이썬 기초 100제
    파이썬 기초 문제
    Python
    백준 파이썬
    비박스
    Oracle
    파이썬 기초
    파이썬 백준
    자바스크립트 객체
    자바스크립트
    백준
    oracle db
    Git
    Codeup
    javascript
    파이썬
    코드업 기초
    파이썬 알고리즘
    카카오 100일 프로젝트
    자바스크립트 API
    백준 풀이
    오라클
    파이썬 문제
    Django
    C++
    백준 문제풀이
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ JavaScript ] 자바스크립트 기본 문법 | 자바스크립트 arguments | function length
상단으로

티스토리툴바