阅读 286

JS中关于if的“优化”小技巧

在前端开发中,if的使用是非常高的,几乎无时无刻不在使用if。本文为大家介绍几个可以替换if的方式。仅供参考。实际的开发中未必都是合适的。也许if反而更合适。

1. 可以替换if的方式

1.1 使用switch

使用if的方式

if(state === 0) {     console.log('未提交'); } else if(state === 1) {     console.log('待审核'); } else if(state === 2) {     console.log('已通过'); } else {     console.log('未通过'); } 复制代码

使用switch的方式

switch(state) {     case 0:         console.log('未提交');         break;     case 1:         console.log('待审核');         break;     case 2:         console.log('已通过');         break;     default:         console.log('未通过'); } 复制代码

1.2 使用数组的方式

比如上面的这个对于状态的显示判断,我们也是可以通过定义数组去显示的。为什么可以呢,因为上面的state的值刚好是对应数组的下标。所以我们定义数组去实现

const stateList = ['未提交', '待审核', '已通过', '未通过']; const state = 0; console.log(stateList[state]); 复制代码

1.3 使用对象或者Map

假设我们上面的状态不是数字了,而是字母或者其他的字符,那么应该怎么办呢?那么此时我们就可以通过使用对象来进行处理。

const stateMap = {     'W': '未提交',     'D': '待审核',     'T': '已通过',     'B': '未通过', } const state = 'D'; console.log(stateMap[state]); 复制代码

1.4 三元运算符

state === 0 ? '否' : '是'; 复制代码

2. 开发中使用事例

2.1 利用对象或者Map去执行不同的方法

我在开发可视化表单的时候,我需要处理用户在拖拽组件放到画布的时候为用户创建不同的组件。这个时候表单的组件是有非常多的,如果我使用if的话,就会写非常多的if、else if,此时我就可以利用对象的方式去优化这个。

假设我的表单组件有Select、Input、AutoComplete、InputNumber、TextArea这些 那么我就可以按以下的方式去写

const createFormComMap = {     Select: function() { console.log('create Select'); },     Input: function() { console.log('create Input'); },     AutoComplete: function() { console.log('create AutoComplete'); },     InputNumber: function() { console.log('create InputNumber'); },     TextArea: function() { console.log('create TextArea'); }, } const componentIs = 'Select'; createFormComMap[componentIs](); 复制代码

2.2 利用数组的方式显示不同的状态

我在开发设备转移的时候,设备转移单上是有个审批状态,审批状态分别是0:保存、1:提交、2:审批通过、3:驳回这几个状态的,我就可以利用数组去处理这个状态的显示的。

const stateList = ['保存', '提交', '审批通过', '驳回']; const state = 0; console.log(stateList[state]); 复制代码

2.3 提前return结束执行

这个还是使用if只是我认为这样处理更容易理解和维护

if(a === 1) {     console.log('提示1'); } else if (a === 2) {     console.log('提示2'); } else {     // 发送请求     fetch('xxxx') };  复制代码

if(a === 1) {     console.log('提示1');     return; }  if (a === 2) {     console.log('提示2');     return; }  // 发送请求 fetch('xxxx') 复制代码

我们有时候在写函数的时候可能这个函数的作用就是根据传进来的值来返回不同的结果。可能有时候我们是这样写的,如下:

function getActValue(a) {     if (a === 666) {         return '牛*';     } else {         return '????';     } } 复制代码

这个地方其实我们是不需要使用else的,因为上面的if执行完就return了,函数也就结束了不会执行下面的逻辑了。所以我们也可以按以下的方式去写。

function getActValue(a) {     if (a === 666) {         return '牛*';     }          return '????';      }


作者:慕尘
链接:https://juejin.cn/post/7032323658764779527

文章分类
前端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐