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로 변환됩니다.
'Javascript' 카테고리의 다른 글
[JS/ES6] Object assign (0) | 2019.02.05 |
---|---|
[JS/ES6] class로 객체 생성 (0) | 2019.02.05 |
[JS/ES6] 화살표 함수 (Arrow function) (0) | 2019.02.05 |
[JS/ES6] template, tagged template literals (0) | 2019.02.04 |
[JS/ES6] from 메서드 (진짜 배열 만들기) (0) | 2019.02.03 |