首页 > web前端 > js教程 > 增强 JavaScript 代码:使用对象代替 Switch 语句

增强 JavaScript 代码:使用对象代替 Switch 语句

Mary-Kate Olsen
发布: 2025-01-14 16:29:44
原创
639 人浏览过

Enhancing JavaScript Code: Using Objects Instead of Switch Statements

介绍

这是一个简短且有些不寻常的主题,但我在工作时在网上并没有遇到太多,所以这是我的贡献。我很想听听人们对这种方法的意见,因为我经常使用它。我不喜欢在 switch 语句中编写多个 case,因此我发现使用对象是一个更干净的替代方案。它可能不会更快,但代码对我来说看起来更干净。

示范

我想处理不同付款状态的订单,并根据是否已付款应用不同的处理方式。

让我们从这个开始:

const orders = [{
  "id": 1,
  "product": "shoes",
  "paymentStatus": "Paid"
},{
  "id": 2,
  "product": "pants",
  "paymentStatus": "Pending"
},{
  "id": 3,
  "product": "tie",
  "paymentStatus": "UnPaid"
}];


const handlePaymentStatus =(order) =>{
  return order.paymentStatus
}

for (const order of orders) {
 handlePaymentStatus(order)
}
登录后复制

我们希望根据 order. paymentStatus 应用特定的处理。一个简单的解决方案是使用如下 switch 语句:

let orders = [{
  "id": 1,
  "product": "shoes",
  "paymentStatus": "Paid"
},{
  "id": 2,
  "product": "pants",
  "paymentStatus": "Pending"
},{
  "id": 3,
  "product": "tie",
  "paymentStatus": "Unpaid"
}];


const handlePaymentStatus =(order) =>{
switch (order.paymentStatus) {
  case 'Paid':
    console.log("it's all good");
    break;
  case 'Unpaid':
    console.log("need to be paid");
    break;
  default:
    console.log(`We'll wait`);
}
}

for (const order of orders) {
 handlePaymentStatus(order)
}
登录后复制

这是一个简单的情况,因为我们有两个选项和一个默认选项,但想象一下它有多种付款方式。为了清楚起见,我们将保持这样:

let orders = [{
  "id": 1,
  "product": "shoes",
  "paymentStatus": "Paid"
},{
  "id": 3,
  "product": "tie",
  "paymentStatus": "Unpaid"
},{
  "id": 2,
  "product": "pants",
  "paymentStatus": "Pending"
},];

const paymentStatusHandlers = {
  'Paid': () =>  console.log("it's all good"),
  'Unpaid': () => console.log("needs to be paid"),
}

for (const order of orders) {
 paymentStatusHandlers[order.paymentStatus] 
    ? paymentStatusHandlers[order.paymentStatus]()
    : console.log("We'll wait")
}
登录后复制

结论

使用对象而不是 switch 语句可以使代码更具可读性和可维护性,尤其是在处理多种情况时。这是个人喜好的问题,但作为替代方法值得考虑。

如果您想要进行任何其他具体更改或添加,请随时告诉我!

以上是增强 JavaScript 代码:使用对象代替 Switch 语句的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板