const combine = (resultHandler, operation, ...numbers) => { // rest 연산자
const validateNumber = (number) => { // 중첩 함수
return isNaN(number) ? 0 : number
};
let sum = 0;
for (const num of numbers) {
if(operation === 'ADD') {
sum += validateNumber(num);
} else {
sum -= num;
}
}
resultHandler(sum); // 콜백 함수 호출
};
const showResult = (messageText, result) => {
console.log(messageText + ' ' + result);
}
// .bind() 메서드를 사용하여 콜백 함수에 인자를 전달 - this 바인딩
combine(showResult.bind(this, '전체 숫자들의 덧셈은 '), 'ADD', 1, 5, 10, 'ab', 'test', -3, 6, 10); // 29
combine(showResult.bind(this, '전체 숫자들의 덧셈은 '), 'ADD', 1, 5, 10, -3, 10, 25, 88); // 136
combine(showResult.bind(this, '전체 숫자들의 뺄셈은 '), 'SUBTRACT', 1, 10, 15, 20); // -46