함수 생성 시, parameter 값을 실수로 안넣을 경우, 기본값을 줄 수 있습니다.
let plus = function(a, b = 10) {
//함수 매개변수 칸에 디폴트 값을 설정하면 됩니다.//만약 함수 호출할때 b를 내가 입력 안하면 기본적으로 10을 넣어주세요 ~ 하는 겁니다.return a+b;
}
console.log(plus(1));//11//그럼 만약 매개변수를 까먹지 않고 잘 넣어줬다면 ?console.log(plus(1, 2));//3//디폴트 값은 매개변수를 잊었을때만 처리됩니다//그럼 파라미터에 아무것도 안넣는다면??console.log(plus());//NaN 낫 어 넘버가 뜨네요//응용으로 연산도 가능합니다let plus = function(a, b = 2 * a) {
return a+b;
}
//함수도 가능합니다.function 함수(){
return 2;
}
let plus = function(a, b = 함수()) {
return a+b;
}
모든 매개변수를 한 번에 다루고 싶은 경우에 arguments를 사용합니다.
function arr(a,b,c) {
console.log(arguments);//[Arguments] { '0': 1, '1': 2, '2': 3 }console.log(arguments[0]);//1console.log(arguments[1]);//2console.log(arguments[2]);//3
}
arr(1,2,3);
간단히 arguments는 arr(1,2,3)을 파라미터를 전부 담고 있는 array입니다.
그럼 반복문으로도 돌릴 수 있지 않을까요?
function arr(a,b,c) {
for(let i = 0;i < arguments.length;i++) {
console.log(arguments[i]);//1 2 3
}
}
arr(1,2,3);
arguments를 옛날 문법입니다.
ES6부터 더 쉬운 문법이 등장했는데 바로 Rest Parameter입니다.
function forRest(...아무거나써도됨) {
console.log(아무거나써도됨);
}
forRest(1,2,3,4,5,6,7,8,9,10);
//결과는 아래처럼// [// 1, 2, 3, 4, 5,// 6, 7, 8, 9, 10// ]
arguments랑 매우 유사한데, 차이점은 arguments는 모든 파라미터를 []에 담아주고
rest 파라미터는 매개변수 전달하고 남은 값들을 []에 담아 보관해줍니다, 아래를 봅시다.
function forRest(a, b,...아무거나써도됨) {
console.log(아무거나써도됨);
}
forRest(1,2,3,4,5,6,7,8,9,10);
// [// 3, 4, 5, 6,// 7, 8, 9, 10// ]
즉 조금 더 유연하게 사용할 수 있습니다.
다만 주의해야할게 있습니다
1)...rest는 매개변수 가장 마지막에 써야합니다. function(a, b, ...rest) <- 이런식으로
2)...rest는 반복해서 사용 불가합니다 function(a, b, ...rest, ...rest2)<-이런거 안됩니다.