본문 바로가기

Javascript

[JS/ES6] default parameters, rest parameters

728x90
반응형

default parameters

function gob(a, b) {

return a * b;

}

console.log(gob(2)); // NaN

함수에 선언된 파라미터의 개수만큼 호출하지 않게 되면 b는 undefined 가 되고 sum(2)의 결과로 NaN 을 출력합니다.


function gob2(a, b=3) {

return a * b;

}

console.log(gob(2)); // 6

b의 파라미터 값을 초기화해두어서 파라미터가 제대로 들어오지 않았을 경우에 초기화된 파라미터 값을 사용했습니다.

이렇게 파라미터의 초기 값을 지정해두는 것이 default parameters 입니다.



객체로 초기화

function objGob(a, b={value:2}) {

return a * b.value;

}

console.log(objGob(4)); // 8

파라미터에 객체로 초기화할 수도 있습니다.




rest parameters

    function rest1(...argArray) {

      console.log(toString.call(arguments)); //[object Arguments]

      // const argArray = Array.prototype.slice.call(arguments); // 1

      // const argArray = Array.from(arguments); // 2

      console.log(toString.call(argArray)); //[object Array]

      console.log(argArray);


    }

    const result1 = rest1(5,2,10,3,"123");

함수의 파라미터가 몇 개가 들어올지 알 수 없을 때, 함수 내에서 argumenets 라는 파라미터를 담은 Arguments 객체를 사용합니다.

이 객체는 Array가 아니라서 Array의 유용한 메서드를 사용할 수 없습니다.


Arguments를 Array로 변환할 3가지 방법이 있습니다.
1. 기존에는 
Array.prototype.slice.call(arguments); 같은 방법을 사용하여 Array로 변환하고 사용했습니다.

2. es6에서 새로 나온 Array.from 메서드를 사용하여 Array로 변환하여 사용할 수 있습니다.

3. 또 다른 방법으로는 rest parameters 를 사용합니다. 사용할 파라미터 앞에 ... 를 적어주면 Arguments가 Array로 변환됩니다.



728x90
반응형