pythonifelse嵌套_彻底解决ifelse嵌套问题
彻底解决if else嵌套问题
开发过程中常因为if else过多导致代码融于,难以阅读,今天就我们就⼀起来解决这个问题,让代码更优美,维护更⽅便,接盘侠更开⼼有函数根据传⼊⽔果类型返回颜⾊,代码如下:
写法⼀
function test(fruit) {
if (fruit == 'apple' || fruit == 'strawberry') {
console.log('red');
}
}
写法⼆
function test(fruit) {
// 把同类放到⼀个中数组
const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries'];
if (redFruits.includes(fruit)) {
console.log('red');
}
}
筛选内多条件处理
更早丢出不符合条件的资源
复合特定条件的放在最后处理
function test(fruit, quantity) {
const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries'];
/
/ 提前丢出不符合条件
if (!fruit) throw new Error('No fruit!');
if (!redFruits.includes(fruit)) return;
console.log('red');
// 复合条件放到最后
if (quantity > 10) {
console.log('big quantity');
}
}
处理传⼊参数是object的情况
使⽤解构赋值来解决
if (fruit && fruit.name) {
console.log (fruit.name);
} else {
console.log('unknown');
}
}
test(undefined); // unknown
test({ }); // unknown
test({ name: 'apple', color: 'red' }); // apple 优化后的代码
function test({name} = {}) {
console.log (name || 'unknown');
}
test(undefined); // unknown
test({ }); // unknown
test({ name: 'apple', color: 'red' }); // apple 使⽤map的⽅式来替换switch
优化前代码
function test(color) {
switch (color) {
case 'red':
return ['apple', 'strawberry'];
case 'yellow':
return ['banana', 'pineapple'];
case 'purple':
return ['grape', 'plum'];
default:
return [];
}
}
test(null); // []
test('yellow'); // ['banana', 'pineapple']
red: ['apple', 'strawberry'],
yellow: ['banana', 'pineapple'], purple: ['grape', 'plum']
};
function test(color) {
return fruitColor[color] || [];
}
使⽤map⽅式的代码
const fruitColor = new Map()
.set('red', ['apple', 'strawberry'])
.set('yellow', ['banana', 'pineapple']) .set('purple', ['grape', 'plum']); function test(color) {
(color) || []; }
把以上内容优化项⽬代码
例:处理前端⾓⾊管理问题
封装role字典,加⼊⼯具类(util.js内) // ⾓⾊
const roles = {
CUSTOMER: {
value: 'CUSTOMER',
unknown怎么处理idValue: 'uid',
url: '/pages/home/index'
},
OIL_ATTENDANT: {
value: 'OIL_ATTENDANT', idValue: 'ouid',
url: '/pages/oiler/index'
}
}
/
/ 根据key获取⾓⾊
const getRoleByKey = (role) => {
return roles[role] || ""
}
// 获取⾓⾊主页
const getRoleUrl = (role) => {
return roles[role].url || ''
}
// 获取当前⽤户⾓⾊
const checkRoleByIdValue = () => {
const app = getApp();
const obj = {
uid: 'CUSTOMER',
ouid: 'OIL_ATTENDANT'
}
let currentRole
Object.keys(obj).forEach(k => {
if (app.globalData[k]) {
currentRole = obj[k]
}
})
return currentRole
}
// ⾓⾊id值
const roleIdIs = (role) => {
return roles[role].idValue
}
页⾯内引⼊util⽅法
import {
getRoleByKey,
getRoleUrl,
checkRoleByIdValue
} from '../../utils/utils.js'
/
/ 不再使⽤if else来判断⾓⾊,根据不同⾓⾊的key来储存数据,直接使⽤⼯具类,⼀⾏代码搞定saveGlobalAndStorageSync(`${currentRole.idValue}`,data.userInfo)
const roleUrl = getRoleUrl(checkRoleByIdValue())
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论