函數簽章方法的預設值

javascript 函式的簽章方法,也就是輸入的參數可以有預設值,可以先參考一下MDN的文件說明

可以透過這個方式,將原本由外部注入的事件若沒有處理,也可以有預設的方式來做
例如,移除陣列中的某個數字,如果找不到,就拋出一個例外,同時也提供讓發生這件事情的時候,程式該怎麼處理,也能夠由外部來指定的彈性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function removeSomething(
source,
value,
fnIfAbsent = () => {
throw new RangeError();
}
) {
const index = source.indexOf(value);
if (index === -1) fnIfAbsent(index);
else source.splice(index, 1);
}

let value = 3;
let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
removeSomething(data, value, val => {
console.log(`集合內沒有 ${value} 這個值`);
});
console.log(data); // [ 1, 2, 4, 5, 6, 7, 8, 9, 10 ]