优化if...else分支
function xxx(name){
if(name === '小明'){
console.log('我是小明xxx')
}else if(name === '小红'){
console.log('我是小红xxx')
}else if(name === '小王'){
console.log('我是小王xxx')
}else{
console.log('啥也不是')
}
}
xxx('小王')
该如何优化呢?
function xxx(name){
const map = {
小明: '我是小明xxx',
小红: '我是小红xxx',
小王: '我是小王xxx'
}
if(map[name]){
console.log(map[name])
}else{
console.log('啥也不是')
}
}
xxx('小王')
这样扩展也方便,这个map对象是可以单独提取到一个文件内
2.0
function speak(name){
if(name.includes('牛')){
console.log(name + '哞哞叫')
}else if(name.endsWith('虎') && name.length <= 3){
console.log(name + '嗷嗷叫')
}else if(name.endsWith('猫') && !name.includes('狗')){
console.log(name + '喵喵叫')
}else{
console.log('不知道怎么叫')
}
}
speak('东北虎')
优化(使用元组)
function speak(name){
const map = [
[
() => name.includes('牛'),
() => console.log(name + '哞哞叫')
],
[
() => name.endsWith('虎') && name.length <= 3,
() => console.log(name + '嗷嗷叫')
],
[
() => name.endsWith('猫') && !name.includes('狗'),
() => console.log(name + '喵喵叫')
]
]
const res = map.find(m => m[0]())
if(res){
res[1]()
}else{
console.log('不知道怎么叫')
}
}
speak('东北虎')