본문 바로가기

programming/javascript

[ES6] 파라미터 핸들링(parameter handling)

파라미터 핸들링

기본파라미터


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){


. . . . . . . 


}


또한 위처럼 기본함수 선언문으로 해도 적용된다.



나머지 파라미터

function addNum(){
var result = 0;
for(var i = 0; i < arguments.length; i++){
result += arguments[i];
}
return result;
}
console.log(addNum()); // 0
console.log(addNum(1)); // 1
console.log(addNum(1,2,3)); // 6


매개변수의 수가 정해지지않은 함수를 처리할때 사용할 수 있는 ES5의 arguments 객체가 있다. 


function addNum(...numbers){

let result = 0;

for(let i = 0; i < numbers.length; i++){

result += numbers[i];

}

return result;

}

console.log(addNum()); // 0
console.log(addNum(1)); // 1
console.log(addNum(1,2,3)); // 6


나머지 연산자는 변수명(파라미터) 앞에 ... 을 추가해서 동적인 배열 형태로 파라미터를 전달할 수 있다.(내생각엔 arguments가 더 편한것같다..) 


펼침 연산자(spread operator)

펼침 연산자는 나머지 연산자와 똑같이 생겼지만, 다르게 쓰인다. 펼침연산자는 배열의 요소들을 어딘가에 쫙 펼칠때 쓸 수 있다.

let numbers = [1,2,3,4,5];

console.log(numbers); // [1,2,3,4,5]
console.log(...numbers); // 1 2 3 4 5


변수 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