优化前:
let num = 17.5
const fn = () => {
if (num >= 16 && num < 17) {
console.log(16.5);
} else if (num >= 17 && num < 17.6) {
console.log(17.5);
} else if (num >= 10.5 && num < 11) {
console.log(10.6);
}
}
fn()
// console.log(17.5)
优化后:
const functionA = () => { console.log(16.5); }
const functionB = () => { console.log(17.55); }
const functionC = () => { console.log(10.6); }
const actions = new Map([
[[16, 17], () => { functionA() }],
[[17, 17.6], () => { functionB(), functionC() }],
['default', () => { functionC() }],
])
const onButtonClick = (num) => {
let A = []
actions.forEach((fn, key) => {
if (num >= key[0] && num <= key[1]) A = key
});
let action = actions.get(A) || actions.get('default')
action.call(this)
}
onButtonClick(17.5)
//console.log(17.5)