常用的if-else代码优化

235 阅读1分钟

if-else代码优化

// if-else优化
function speak(name) {
  if(name === '老牛') {
    console.log('老牛哞哞叫')
  } else if(name === '老虎') {
    console.log('老虎嗷嗷叫')
  } else if(name === '小猫') {
    console.log('小猫喵喵叫')
  } else {
    console.log('不知道怎么叫')
  }
}

// 相同的执行任务
function speak(name) {
  let map = {
    '老牛': '老牛哞哞叫',
    '老虎': '老虎嗷嗷叫',
    '小猫': '小猫喵喵叫',
  }
  if(map[name]) {
    console.log(map[name])
  } else {
    console.log('不知道怎么叫')
  }
}

// 不同的执行任务
function speak(name) {
  let map = {
    '老牛': () => { console.log('老牛哞哞叫') },
    '老虎': () => { console.log('老虎嗷嗷叫', '真牛逼') },
    '小猫': () => { console.log('小猫喵喵叫', '真可爱啊') }
  }
  if(map[name]) {
    map[name]()
  } else {
    console.log('不知道怎么叫')
  }
}

// =======================================================
// 判断条件复杂且执行任务不同, 利用元组
function speak3(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('小猫喵喵叫', '打开文件夹')
  } else {
    console.log('不知道怎么叫')
  }
}

function speak3(name) {
  let map = [
    [
      () => name.includes('牛'),
      () => console.log(name + '哞哞叫')
    ],
    [
      () => name.endsWith('虎') && name.length <= 3,
      () => console.log(name + '嗷嗷叫', '真牛逼')
    ],
    [
      () => name.endsWith('猫') && !name.includes('狗'),
      () => console.log('小猫喵喵叫', '打开文件夹')
    ]
  ]
  let target = map.find(item => item[0]())
  if(target) {
    target[1]()
  } else {
    console.log('不知道怎么叫')
  }
}
speak3('猫')