if,else的高级写法,告别原始if, else

if,else一旦嵌套过多,就会变得特别特别的丑,而且只会用if,else也没啥意思对吧

下面举个例子,如果a大于b,输出’错的’,否则输出‘对的’

先看原始写法

  const a = 1;
  const b = 2;
  let c = null
  if(a>b){
   c = '错的'
  }else{
   c = '对的'
  }
  console.log(c)     //对的

再看这种写法

 const a = 1;
 const b = 2;
 const c =  a > b && '错的' || '对的'
 console.log(c)    //对的

下面来解释一下第二种写法,就是当a>b的时候就执行’错的’,否则就执行’对的’,因为我们的a小于b,所以输出’对的’

再举个例子,定义一个变量,当一个值为0时它为多少,当一个值为5时它为多少…

先看原始的if,else写法

  let a = null
  let b = 3
  if(b == 1){
    a = 1
  }else if(b == 2){
    a = 2
  }else{
    a = 3
  }
  console.log(a)   //3

再来看一下switch写法

 let a = null
 let b = 3
  switch (b) {
    case 1 : a = 1
      break;
    case 2 : a = 2
      break;
    case 3 : a = 3
      break;
    default: a = 0
      break;
  }
  console.log(a)    //3

再来看一下高级写法

  const b = 3
  const a = (b==1 && 1) || (b==2 && 2) || (b==3 && 3) || 0;  
  console.log(a)  //3

再来看includes方法

 if(value === 'duck' || value === 'dog' || value === 'cat') {
  }  

 const options = ['duck', 'dog', 'cat'];
 if (options.includes(value)) {
 }

再来看键值对方法

function del(){
    console.log('删除')
  }; 
  function add(){
    console.log('新增')
  }; 
  function update(){
    console.log('更新')
  }; 
  let typeFn = {
      'del': del,
      'add': add,
      'update': update
  };
  function process(operateType) {
      typeFn[operateType]();
  };
  process('del'); //删除


  let a = 0
  let typeFn = {
      'del': 1,
      'add': 2 ,
      'update': 3
  };
  function process(operateType) {
     return typeFn[operateType];
  };
  a = process('add'); 

  console.log(a)  //2

再来看Map方法

  let typeFn = new Map([
    ['del', function () {console.log('你好啊,李银河') }],
    ['add', function () {console.log('你好啊,王大卫')}],
    ['update', function () {console.log('你好啊,吴彦祖')}],
  ]);

  function process(operateType) {
      typeFn.get(operateType)();
  };
  process('update');  //你好啊,吴彦祖

再来看大小区间之间的写法

function youAreMyHero(experience) {
    if (experience < 100) {
        return 'a';
    } else if (experience < 200 && experience >= 100) {
        return 'b';
    } else if (experience < 300 && experience >= 200) {
        return 'c';
    } else if (experience >= 300) {
        return 'd';
    };
};
let level = youAreMyHero(351); //d

解决:

function youAreMyHero(param) {
    let experience = [300, 200, 100];
    let level = ['a', 'b', 'c', 'd'];

    for (let i = 0; i < experience.length; i++) {
        if (param >= experience[i]) {
            return level[i];
        };
    };
    return level[level.length - 1];
};

 let level = youAreMyHero(351);  //d
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值