如何优化JavaScript中大量使用if…else…if的情况?
AI 概述
方法 1: 写一个对象, key为条件, value为满足条件后执行的语句方法 2: 写一个对象, key为条件, value为满足条件后执行的语句(函数形式)方法 3: 使用元组结语
假如我们有如下代码是我在项目中看到并模拟出来的一个分支语句,可以看到有大量的 if...else,给人感觉很臃肿,不好维护,体验极差。
function...
目录
假如我们有如下代码是我在项目中看到并模拟出来的一个分支语句,可以看到有大量的 if...else,给人感觉很臃肿,不好维护,体验极差。
function routingJump(route_name) {
if (route_name === 'home') {
console.log('跳转首页');
} else if (route_name === 'shop') {
console.log('跳转购物页');
} else if (route_name === 'information') {
console.log('跳转资讯页');
} else if (route_name === 'main') {
console.log('跳转我的');
} else if (route_name === 'course') {
console.log('跳转课程页');
} else if (route_name === 'activity') {
console.log('跳转活动页');
} else if (route_name === 'help') {
console.log('跳转帮助页');
} else {
console.log('不跳转页面');
}
}
routingJump('home'); // 跳转首页
那么针对这样的情况我们如何进行优化呢?
方法 1: 写一个对象, key为条件, value为满足条件后执行的语句
function routingJump(route_name) {
const map = {
home: "跳转首页",
shop: "跳转购物页",
information: "跳转资讯页",
main: "跳转我的",
course: "跳转课程页",
activity: "跳转活动页",
help: "跳转帮助页"
}
if (map[route_name]) {
console.log('map[route_name]: ', map[route_name]);
} else {
console.log('不跳转页面');
}
}
routingJump('home'); // 跳转首页
但这么写会有一个问题, 那就是假设每个分支要做的事情不同,那这样写就没办法实现了,请看方法 2
方法 2: 写一个对象, key为条件, value为满足条件后执行的语句(函数形式)
function routingJump(route_name) {
const map = {
home: () => console.log("跳转首页"),
shop: () => console.log("生成随机数"),
information: () => console.log("排序"),
main: () => console.log("关闭页面"),
course: () => console.log("打印"),
activity: () => console.log("监听某些事"),
help: () => console.log("......")
}
if (map[route_name]) {
map[route_name](); // <-------------------这里要改为调用函数
} else {
console.log('不跳转页面');
}
}
routingJump('shop'); // 生成随机数
假如程序复杂, 判断条件很苛刻, 那么又应该怎么写呢? 请看方法 3
方法 3: 使用元组
假设
- 路由名称里面只要包含了
h这个字母, 统统跳转首页 - 路由名称里面以
s开头的, 统统跳转购物页 - 路由名称里面以
n结尾的, 统统跳转资讯页 - 路由名称里面包含
m, 但不包含d的, 统统跳转我的 - 路由名称里面包含
a, 但长度<10的 统统跳转活动页
function routingJump(route_name) {
const map = [
[
() => route_name.includes('h'),
() => console.log("跳转首页")
],
[
() => route_name.startsWith('s'),
() => console.log("跳转购物页")
],
[
() => route_name.endsWith('n'),
() => console.log("跳转资讯页")
],
[
() => route_name.includes('m') && !route_name.includes('d'),
() => console.log("跳转我的")
],
[
() => route_name.includes('a') && route_name.length < 10, () => console.log("跳转活动页")
]
]
const targetFn = map.find(item => item[0]());
if (targetFn) {
targetFn[1]()
} else {
console.log('不跳转页面');
}
}
routingJump('activity'); // 跳转活动页
以上优化方式就是我们熟悉的策略模式。
结语
以上就是一些简单常用的优化手段, 当然还有 switch、Map等等, 也可以避免大量的if...else。
以上关于如何优化JavaScript中大量使用if…else…if的情况?的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 如何优化JavaScript中大量使用if…else…if的情况?
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 如何优化JavaScript中大量使用if…else…if的情况?

微信
支付宝