JS/JS 공부

[JS] 함수와 파라미터 (arguments)

congs 2023. 4. 19. 16:46

함수와 파라미터 (arguments)

: 자바스크립트의 파라미터 특징과 기능

  • 파라미터의 개수와 관계없이 함수나 메서드의 이름이 같다면 호출가능
  •  파라미터의 개수와 불일치하여 값을 받지 못하는 파라미터는 undefined 처리
  • 값을 받아오지 못하는 파라미터가 undefined 일 경우, 별도로 파라미터에 기본값을 설정할 수 있음
            => optional parameter 옵셔널 파라미터 
  • 모든 파라미터를 관리하는 arguments라는 프로퍼티를 이용하여 파라미터를 배열에 담아 사용할 수 있음
  •   프로토 타입의 속성(프로퍼티)을 사용하는 방식
            (단, 옵셔널 파라미터는 저장하지 않는다)
  •  옵셔널 파라미터는 다른 파라미터보다 항상 뒤에 있어야함

 

사용

 
        function testFun(p1, p2, p3, p4, p5=1){
            console.log(arguments); //Arguments(5)
            console.log(arguments.length); // 5  개수
            return p1 + p2 - p3 * p4 / p5;
        }
        console.log(testFun(1,2,3,4,5));
              // (1+2-3*4/5) Arguments(5), 5, 0.600..
        console.log(testFun(1,2,3,4));
              // (1+2-3*4/1) Arguments(4), 4, -9


        //---------------------------------------------------------------------------

        function myFun(x, px){
            let y = px;
            if(y == undefined){
                y=2; //옵셔널
            }
            console.log(x,y);
        }
       
 
        function myFun2(x, y=2){
            console.log(x,y);
        }
        myFun(1);
       
 

 

 

rest parameter : 나머지(이외의, 남는것들) 파라미터

  • 사용할 파라미터는 일반 파라미터로 배정하고, 나머지 파라미터들을 통합하여 하나의 이름으로 배정하는 기법


     
       function restFun(a, b, ...others){
            console.log(others);
            for(const arg of others){
                console.log(`arg: ${arg}`);
            }
        }
        restFun(1,2,3,4,5,6,7,8,9);
 

 

 

...     :      spread 연산자

  • 배열이나 객체를 복제하는 경우 사용


        let oldArr = ['a', 'b', 'c', 'd', 'e'];
        let newObj = {...oldArr};
       
        console.log(oldArr);
        console.log(newObj);

 

 spread 전개 함수

  • 사용시, 이미 다 들어가 있는 배열이여야함!

        function sum(x, y, z){
            return x+y+z;
        }
        let num = [1, 2, 3];
        console.log( sum(...num) );   // 6
 

 

'JS > JS 공부' 카테고리의 다른 글

[JS] 비표준 속성 non_standard  (0) 2023.04.20
[JS] 비동기통신 ( async await ,promise Chain )  (0) 2023.04.20
[JS] JSON 데이터입출력  (0) 2023.04.19
[JS] class, 객체, 생성자  (0) 2023.04.18
[JS] try~catch 예외 처리  (0) 2023.04.18