파라미터 핸들링
기본파라미터
function addNum(a, b){
console.log(a + b); // NaN
console.log(a); // 5
console.log(b); // undefined
}
addNum(5);
위처럼 전달받을 변수는 2개인데 한개만 전달했을 경우 값의 연산이 제대로 되지 않는다. API 같은 경우 필요한 파라미터만 전달하도록 만들어져있으므로 전달받은 값이 없을 경우 기본적으로 나머지는 0 으로 처리해서 연산하도록 해야한다. 이것을 기본 파라미터 설정이라 하는데, 아래와 같이 할 수 있다.
var addNum = (a = 0, b = 0 ) => { // 파라미터 기본값을 설정함.
console.log(a + b); // 5
console.log(a); // 5
console.log(b); // 0 기본값
}
addNum(5);
기본값을 a,b 둘다 0 으로 설정했다. 그래서 b값은 전달이 안되었는데도, 0으로 자동 설정된다.
function addNum( a = 0, b = 0){
. . . . . . .
}
또한 위처럼 기본함수 선언문으로 해도 적용된다.
나머지 파라미터
매개변수의 수가 정해지지않은 함수를 처리할때 사용할 수 있는 ES5의 arguments 객체가 있다.
function addNum(...numbers){
let result = 0;
for(let i = 0; i < numbers.length; i++){
result += numbers[i];
}
return result;
}
나머지 연산자는 변수명(파라미터) 앞에 ... 을 추가해서 동적인 배열 형태로 파라미터를 전달할 수 있다.(내생각엔 arguments가 더 편한것같다..)
펼침 연산자(spread operator)
변수 numbers를 펼침연산자(...)로 출력해보면 배열요소 하나하나를 따로 출력한다.
let numbers = [1,2,3,4,5];
let max = Math.max(...numbers);
console.log(max); // 5
정석대로라면 두번째 줄을 let max = Math.max(1,2,3,4,5) 이렇게 번거롭게 해야하지만, 펼침연산자를 활용하여 배열 해체가 필요없다.
'programming > javascript' 카테고리의 다른 글
[ES6] 템플릿 표현식 (0) | 2018.02.06 |
---|---|
[ES6] for ~ of문 (0) | 2018.02.06 |
[ES6] 화살표 함수(Arrow functions) (0) | 2018.02.04 |
[ES6] 호이스팅(Hoisting) (0) | 2018.02.04 |
[ES6] 상수 const (0) | 2018.02.04 |