ES6부터 함수 매개변수에 기본값을 줄 수 있다.
function printLog(a=1){
console.log({ a });
}
printLog(); // { a:1 }
인수 없이 함수를 호출하므로, a에는 undefined가 입력된다. 기본값이 정의된 매개변수에 undefined를 입력하면 정의된 기본값1이 사용된다.
function getDefault() {
return 1;
}
function printLog(a = getDefault()){
console.log({ a });
}
printLog(); // { a: 1 }
function required() {
throw new Error('no parameter');
}
function printLog(a = required()) {
console.log({a});
}
printLog(10); // { a: 10 }
printLog(); // no parameter
매개변수의 값이 존재하면 required 함수는 호출되지 않는다.
function printLog(a, ...rest){
console.log({ a, rest });
}
printLog(1, 2, 3); // { a: 1, rest: [2,3] }
function printLog(a){
const rest = Array.from(arguments).splice(1);
console.log({a, rest});
}
printLog(1, 2, 3); // { a: 1, rest: [2, 3] }
가독성이 좋지 않으므로, 나머지 매개변수를 사용한 방식이 더 낫다.
const numbers = [10, 20, 30, 40]
const result1 = getValues(numbers, 5, 25);
const result2 = getValues({ numbers, greaterThan: 5, lessThan: 25 });
const result1 = getValues(numbers, undefined, 25); // 필요없는 매개변수 자리에 undefined를 넣으면 된다. -> 관리가 힘듬.
const result2 = getValues({ numbers, greaterThan: 5 });
const result3 = getValues({ numbers, lessThan: 25 });
const add = (a, b) => a + b;
console.log(add(1,2)); // 3
const add5 = a => a + 5;
console.log(add5(1)); // 6
const addAndReturnObject = (a, b) => ({ result: a + b });
console.log(addAndReturnObject(1, 2).result); // 3
const add = (a, b) => {
if (a <= 0 || b <= 0){
throw new Error('must be positive number');
}
return a + b;
}