首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

你不觉得这很丑陋吗?如何修复switch丑陋的JS语句

在回答这个问题之前,我想提醒您,作为一个云计算领域的专家和开发工程师,我们应该注重技术的全面性和客观性,而不是将个人情感和审美观念引入到技术讨论中。因此,我将尽力给出一个完善且全面的答案,关于如何修复 switch 语句的问题。

首先,让我们来了解一下 switch 语句。switch 语句是一种条件语句,用于根据不同的条件执行不同的代码块。它可以替代多个 if-else if-else 语句,使代码更加简洁和可读性更高。

然而,有时候 switch 语句可能会变得冗长和难以维护,这可能是您所指的“丑陋”。为了修复这个问题,我们可以采取以下几种方法:

  1. 使用对象字面量代替 switch 语句:将每个条件作为对象的属性,对应的代码块作为属性值。然后使用条件值作为键来访问对应的代码块。这种方法可以使代码更加简洁和可读性更高。
代码语言:txt
复制
const actions = {
  case1: () => {
    // 执行代码块1
  },
  case2: () => {
    // 执行代码块2
  },
  // 其他条件...
};

const condition = 'case1'; // 根据条件设置值

if (actions.hasOwnProperty(condition)) {
  actions[condition](); // 执行对应的代码块
} else {
  // 处理默认情况
}
  1. 使用函数映射代替 switch 语句:将每个条件作为函数的参数,对应的代码块作为函数体。然后根据条件调用对应的函数。这种方法可以使代码更加模块化和可维护性更高。
代码语言:txt
复制
function case1() {
  // 执行代码块1
}

function case2() {
  // 执行代码块2
}

// 其他条件...

const condition = 'case1'; // 根据条件设置值

if (typeof window[condition] === 'function') {
  window[condition](); // 执行对应的函数
} else {
  // 处理默认情况
}
  1. 使用策略模式代替 switch 语句:将每个条件作为一个策略对象,对应的代码块作为策略对象的方法。然后根据条件选择对应的策略对象执行。这种方法可以使代码更加灵活和可扩展性更高。
代码语言:txt
复制
class Case1Strategy {
  execute() {
    // 执行代码块1
  }
}

class Case2Strategy {
  execute() {
    // 执行代码块2
  }
}

// 其他条件...

const condition = 'case1'; // 根据条件设置值

const strategies = {
  case1: new Case1Strategy(),
  case2: new Case2Strategy(),
  // 其他条件...
};

if (strategies.hasOwnProperty(condition)) {
  strategies[condition].execute(); // 执行对应的策略
} else {
  // 处理默认情况
}

以上是三种常见的修复 switch 语句的方法,它们可以根据具体情况选择使用。这些方法可以使代码更加简洁、可读性更高、可维护性更好,并且不会涉及到特定的云计算品牌商。

希望这些解决方案能够帮助您修复 switch 语句的问题。如果您有任何其他问题或需要进一步的解释,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

js一行If ... else ... else if语句

(true block) : (else block)来设置一行if / else语句var variable = (condition) ?...(true block) : (else block) ,但我想知道是否有办法在其中放入else if语句。 任何建议,将不胜感激,谢谢大家! 当然,可以做嵌套三元操作符,但它们很难阅读。...c(b) : b : null 更长版本 三元运算符?:用作内联if-else是正确关联 。 总之意味着最右边?...关闭剩余左括号。 更好可读性 从上面的丑陋上线者可能(并应该)为了可读性而重写为: (请注意,压痕不隐式地定义正确关闭装置,如括号()做。) a ? a : b ?...‘PM’ : ‘AM’ ; 没有ElseIf,为了开发而不使用链接,如果您在.js中使用多个条件,则可以使用更快switch

1.6K10

关于 Web 可访问性神话

好像这是一个合理原因, 因为他们正在经历所有的延误。 但是,没有什么比真相更离点了。无障碍设施并不难。知道什么是困难?在奥林匹克水平上跑步。更重要是,只是跑步是困难。...如果他们在开始时实现了可访问性,他们本可以避免。 如果有一辆车,油灯亮着,就换油。需要你几分钟时间,无论是自己完成还是在商店,它会花费只有几块钱。...它一直存在,因为网络可访问性是一个东西(意味着,基本上从互联网开始),它植根于一个误解。以前,无障碍概念与没有样式,没有动画,没有图像,没有视频。什么都没有一个平淡,沉闷,丑陋网站。......有常见偏头痛,导致有"阴云视觉"和短注意力跨度。 我们被这样例子包围着。每天。到处。注意,会开始越来越注意到他们。 image.png 如果我说其中3个人有残疾能分辨出是谁?...即使是一个完全健康的人,可能会发现自己在网络访问性将帮助你情况下。例如,在外面使用笔记本电脑,反射不会让阅读,难道不想有更多对比?在森林里露营和关键图像 "当蛇咬怎么办?

65620
  • Tailwind CSS 辩论:又一款被网络纯粹主义者贬低酷工具

    Tailwind 自己文档指出了对这种方法常见反对意见:“这不就是内联样式?”那些来自 20 世纪 90 S年代的人会记得,在 CSS 革命兴起之前,必须向 HTML 文件添加样式标记。...简而言之,Tailwind 具有丑陋标记并且是非标准似乎是 Jared White 和其他 Tailwind 批评者核心抱怨。...我浏览了一些最近帖子,但他发布这张 Macho Man Randy Savage GIF 似乎总结了他立场: 诱人地把这场关于 Tailwind 辩论看作是又一场“酷工具与网络纯粹主义者”...“我看到其他工程师,不论级别如何,都陷入了糟糕 CSS 中,所以对他们来说,也许 Tailwind 看起来像是一种救星,”他在他文章中写道。“但是 CSS 现在更好了。...也许他们会在完成了使用 Next.js 和 Tailwind 这些酷工具一天有偿工作之后这样做。

    16610

    编写模块化CSS——BEM

    接下来,必须通过覆盖 元素来修复代码(并且可能会在修复中“伤及无辜” )。 ?...那么,如果需要一个不同背景颜色,所做就是改成一个新 class,比如说 .button--secondary,舒服吧! ? 给我们引入了 BEM 下一部分 —— 修饰符。...在这一点上,仍然可能不喜欢 BEM 丑陋 --modifier 语法。我知道为什么,但我爱上这个语法是因为我讨厌命名。有时,我发现需要使用很多单词来命名一个 BEM 块或元素。...具有讽刺意味,但是这个丑陋语法让我代码更简洁,更易于维护。所以强烈推荐尝试它:) 我们来看看 BEM 第三个重要部分 —— 元素。 元素(Elements) 元素是块子节点。...创建新块来保存孙元素 在上述情况下,可以轻松地将 .comments__comment 拆为 .comments 和 .comment : ? 更有意义,不是

    2.1K70

    IDA F5 增强插件: I Have a Dream (二)

    一、目标 Rolf Rolles大佬曾经说过,一图胜千言 [main.png] 一堆丑陋 While 是没有加立白效果,干净漂亮 if 是加了立白效果。...[a4.png] 每个块跑完之后不直接到自己后继块,而是到主分发器块,这样漂亮if else结构就由丑陋switch语句代替了。...0 [logger_D810Tracker] level=DEBUG handlers=defaultFileHandler qualname=D810.tracker propagate=0 打开两处调试信息打印...然后F5一下 anel.bin, sub_1000CF20 函数 之后,在日志文件里面就会清晰打印出,unflat过程中日志信息在 plugins\d810_logs\d810.log 需要重点分析是...三、总结 我梦想就是 F5一下,啥ollvm、Tigress混淆都是渣渣。 D810给我们提供了一个非常经典样例,仔细分析分析它。F5从此不一样了。

    1.1K00

    知乎热议最丑陋数学公式:「四次方程求根」高票当选

    最近知乎一个问题讨论最丑陋数学公式获超四百万浏览,各种各样丑陋公式都被拿出来批判,其中四次方程求根高票当选,一张A4 纸根本写不下公式见过?...计算机、人工智能行业推动也离不开数学,吴军博士曾写了一本书《数学之美》,将高深数学原理讲得通俗易懂,让非专业读者也能领略数学魅力,让读者了解到如何用数学去解决工程问题。...但数学真的一直都是美的,就没有丑陋一面? 最近知乎上一个热议引起广泛关注,「数学史上认为最丑陋公式是什么?」,吸引了超四百万浏览量。...它由四个方程组成:描述电荷如何产生电场高斯定律、论述磁单极子不存在高斯磁定律、描述电流和时变电场怎样产生磁场麦克斯韦-安培定律、描述时变磁场如何产生电场法拉第感应定律。...每个人因专业不同、兴趣不同,所认同丑陋、最优美的公式想必也各不相同,不如讨论一下认为最美和最丑公式吧!

    1.5K30

    JS 状态模式

    实现 比如超级玛丽,就可能同时有好几个状态比如 跳跃,移动,射击,蹲下 等,如果对这些动作一个个进行处理判断,需要多个if-else或者switch不仅丑陋不说,而且在遇到有组合动作时候,实现就会变更为复杂...总结 状态模式使用场景也特别明确,有如下两点: 一个对象行为取决于它状态,并且它必须在运行时刻根据状态改变它行为。 一个操作中含有大量分支语句,而且这些分支语句依赖于该对象状态。...状态通常为一个或多个枚举常量表示。 简而言之,当遇到很多同级if-else或者switch时候,可以使用状态模式来进行简化。...---- 本文是系列文章,可以相互参考印证,共同进步~ JS 抽象工厂模式 JS 工厂模式 JS 建造者模式 JS 原型模式 JS 单例模式 JS 回调模式 JS 外观模式 JS 适配器模式 JS 利用高阶函数实现函数缓存...(备忘模式) JS 状态模式 JS 桥接模式 JS 观察者模式 网上帖子大多深浅不一,甚至有些前后矛盾,在下文章都是学习过程中总结,如果发现错误,欢迎留言指出~ 参考: 《Javascript 设计模式

    2.4K40

    Java 12 JDK 12 正式发布

    使用 Shenandoah 暂停时间与堆大小无关,意味着无论堆是 200MB 还是 200GB,都将具有相同暂停时间。...JEP 325: Switch Expressions (Preview) Switch 表达式(预览功能) 对 switch 语句进行了扩展,使其不仅可以作为语句(statement),还可以作为表达式...而在用户控制下,可以可选地执行完整 GC,以使返回内存量最大化。 上述每一个新特性都有详细说明文档,点击「阅读原文」可以跳转查看。 JDK 13 还会远?...switch 表达式扩展了 switch 语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统 switch 语法,或者使用简化“case...最想要 JDK 特性是什么?欢迎在留言区和大家分享! -END-

    61130

    Java新未来:逐渐“Kotlin化”

    getter(在这里,我假设已经不再实现 setter 了,还记得我们在“ Java 中新并发模型”一文中所讨论不可变性?)。...改善 switch 语句 switch 语句解决了在 Java 中使用 switch 语句一些固有问题。...我们一直以来都被教导应该避免使用 switch 语句,因为它们容易出错并会导致代码重复 。举例来说,我们容易遇到某个 case 条件覆盖不到场景。...非常类似于 Kotlin when 语句可以通过下方链接了解该语句更多信息。...文本块 有没有遇到过将一个大 blob JSON 赋值给 Java 变量场景?是否也受够了这种丑陋代码?Java 将会引入多行字符串特性,我们可以通过将它们 封装在三重引号 中来定义它们。

    95920

    Python 进阶指南(编程轻松进阶):六、编写 Python 风格代码

    计算机可以运行不可读代码,但不可读代码对于人类程序员来说很难维护和调试。美丽是主观,但是不考虑如何理解代码对其他人来说通常是丑陋。...但是仅仅因为向别人解释一个程序代码容易,并不意味着它是好代码。不幸是,弄清楚如何使代码尽可能简单,而不是更简单,通常很难做到。 命名空间是一个非常棒想法——让我们多做一些吧!...使用字典代替switch语句 Java 之类语言有一个switch语句,这是一种if-elif-else语句,它根据判定变量包含众多值中哪一个来运行代码。...默认情况下,Java switch语句具有“跳转”功能,要求每个块以一个break语句结束。否则,执行将继续到下一个块。忘记添加这个break语句是一个常见错误来源。...另外,虽然 Python 中没有switch语句,但是使用字典是一种简洁方法来实现它等价语句,而不需要使用几个if-elif-else语句,并且在两个值之间求值时可以使用三元运算符。

    94460

    一行代码简化Python异常信息:错误清晰指出,排版简洁美观 | 开源

    一行代码简化报错 先来试试一个简单错误。 def foo(): 1/0 foo() 不使用PrettyErrors库,报错信息长这样: ? 倒是能看清,就是这一长串红字十分丑陋。...bug少时候,还不觉得有什么太大区别。当报错信息铺满一整页,美观不美观,对心灵打击程度就完全不同了。 ? 使用指南 像Python所有第三方库一样,PrettyErrors安装十分简单。...pip一下: python -m pip install pretty_errors 如果你想让每一个程序都能这样在报错时也保持美貌,那么运行下面这行命令,就不用每次都 import pretty_errors...set PYTHON_PRETTY_ERRORS=1 需要注意是,使用终端本身具有颜色输出功能,异常信息输出才会带有不同颜色。...如果不巧惯用是单色终端,那么可以试试 pretty_errors.mono() 中设置。 人生苦短,bug实多。

    64910

    一行代码简化Python异常信息:错误清晰指出,排版简洁美观 | 开源

    一行代码简化报错 先来试试一个简单错误。 def foo(): 1/0 foo() 不使用PrettyErrors库,报错信息长这样: ? 倒是能看清,就是这一长串红字十分丑陋。...bug少时候,还不觉得有什么太大区别。当报错信息铺满一整页,美观不美观,对心灵打击程度就完全不同了。 ? 使用指南 像Python所有第三方库一样,PrettyErrors安装十分简单。...pip一下: python -m pip install pretty_errors 如果你想让每一个程序都能这样在报错时也保持美貌,那么运行下面这行命令,就不用每次都 import pretty_errors...set PYTHON_PRETTY_ERRORS=1 需要注意是,使用终端本身具有颜色输出功能,异常信息输出才会带有不同颜色。...如果不巧惯用是单色终端,那么可以试试 pretty_errors.mono() 中设置。 人生苦短,bug实多。

    52640

    坚持还是放弃,Go语言“美好与丑陋”解读

    对于没有并发语言(Node.js)或者全局解释器锁(GIL)来说,实际上是再正常不过事情。结合语言简单性,这说明了 Go 语言令人兴奋一面。...Defer 语句,用于避免遗忘清理 defer 语句作用类似于 Java 中 finally:在当前函数结束时执行一些清理代码,并不管此函数是如何退出。...这也意味着在 Go 中没有办法让编译器检查 switch 语句是否详尽,并且无法描述给定类型所支持值。...Tour of Go 有一个专门页面来解释这种行为,并明确指出:“请注意,一个具有 nil 值接口值本身不是零”。 不过,丑陋,可能会导致微小错误。...它在底层使用了反射,而且要求排序时候,在 slice上comparator 函数得形成一个闭包。虽然看起来会好些,但它依旧丑陋

    1.6K41

    代码整洁之道-读书笔记之函数

    答:if语句、else语句、while语句等,其中代码块应该只有一行函数缩进层级不应该多余一层或者两层,这样函数易于阅读和理解2.只做一件事一函数理论上只做一件事情,只做一个抽象层次事情,通俗说就是看看当前函数是否还可以拆分出一个函数...阅读代码习惯:自顶向下阅读图片4.switch语句switch语句本意就是完成多件事情,下面看一段switch代码public Money calculatePay(Employee e) throws...checkPasswordAndInitSession输出参数参数自然就会当做函数输入,但是也有情况是作为输出。...因此,处理错误函数不该做其他事。意味着(如上例所示)如果关键字try在某个函数中存在,它就该是这个函数第一个单词,而且在catch/finally代码块后面也不该有其他内容。...如果我们可以保持函数短小,不用遵循上面的原则12.如何写出这样函数我写函数时,一开始都冗长而复杂。

    45780

    自毁项目,拒绝“开源白嫖”?知名 NPM 包作者删库、注入恶意代码,数千个应用崩溃ing!

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 还记得去年年底令全球多数 Java 工程师深夜加班 Apache Log4j 2 漏洞?...好在据 The Verge 报道,目前 colors.js 已更新至正常版本,虽然 faker.js 仍未修复,但可降级至之前 5.5.3 版本来解决问题。...针对此次事件,诸多资深开发者也表达出了各自看法。 资讯安全专家 VessOnSecurity 认为:“太不负责任了!如果在发布免费代码时遇到问题,那就不要发布。...为什么大公司就应该从别人无偿劳动中赚到一大笔钱,甚至他们还声称这样做是‘出于对开源热爱’?所以我觉得这样公平,对我好我会回报,但如果在背后捅了我一刀,也同理。”...那么在你看来,认为这一矛盾该如何缓解,开源开发者又该如何自处呢?

    95110

    为什么程序员总是发现不了自己Bug? 程序员: 我不认识他啊

    因此,如何处理修复 Bug 过程也值得我们细细琢磨。 我想分享一些程序员修复他们源代码时所经历想法。我相信很多开发人员和软件工程师经历过这些艰辛,然后在事后一笑而过。以下经历过哪些? 1....“我不知道是要删除还是要重写它” 回顾从前老源代码,会有一种想要返工写成较大块集群冲动和诱惑。丑陋逻辑语句,还有冗长语法,导致代码非常难以阅读!...这难道不像我们自己编程故事正兴致勃勃地在构建着什么,但是突然之间,函数输出了一个致命错误。 所以,现在你必须回过头去删除一些代码块,以找出错误发生行号。...调试是必须要采取步骤,进两步,退一步。盯着代码数个小时,以为函数名或变量作用域中有哪里搞错了,最后才发现是遗漏了一个括号,滋味,酸爽得不要不要。所有这些时间都因为一个小小语法错误而浪费。...当涉及到比较基础前端 HTML / CSS / JS 时,我们没有必要写注释。但更复杂脚本和程序却需要一定形式条理组织,当你在几个月后,甚至若干年之后需要再回过头来看的话。

    1.1K10

    如何避免 Java 中“NullPointerException”

    在本文中,我将解释这个问题根源并提供解决该问题方法。 2 问题根源:Java 弱类型安全 听说过编译类型安全?如果不在本文中,您可以了解它是什么以及编译时和类型安全之间区别。...使用 map 函数,我们可以编写与前面的语句类似的等价物: 与简单空检查相比,可选是否提供好处?是的,它确实。...目前还不清楚,在所有 map/flatmap/ifpresent 背后,可能会失去逻辑意义。所以丑陋空检查是简单明了。...让我们使用 Null 检查和可选 ifPresent 来修复它: 使用 Null 检查和可选 ifPresent 修复问题 而且,编译后,我们得到了一个成功构建: 构建成功 15 检查器框架限制...现在我们有义务通过@Nullable 方法标记所有可能为Nullable 方法。似乎是一个强制性步骤,我们无法避免。但是,这不是唯一限制。

    2.9K20

    大地之上

    碎碎念 会有公司在看到新海诚独立动画之后,认为新海诚很喜欢做动画,然后让他来自己公司作为一个原画师帮忙画原画? 这个类比不准确,现在DOLO和星之声也相去甚远。...(其实美术和游戏思维也是基石能力啊……) 所以,要扩散能力出去,最好就是多写技术文?...我把游戏更新版本号流程记录下来了,大部分人表示, 『我们连怎么打包上架都不了解,在这讲如何更新版本号有什么意思?』...就像某个故事,一个老师当众举起一个丑陋橡皮泥椅子,在全班同学面前嘲笑,『有人见过比更差椅子?』...『有的』,说着,那位同学从桌子底下拿出两个更丑陋橡皮泥椅子,『这两个是我第一次做和第二次做椅子,而交给您是我第三次完成……』 这个故事作为阅读理解标准解读是啥,我忘了。

    693120

    为什么程序员总是发现不了自己Bug?

    因此,如何处理修复 Bug 过程也值得我们细细琢磨。 ? 牛 X 程序员和 Bug 之间 PK 大雄想分享一些程序员修复他们源代码时所经历想法。...“我不知道是要删除还是要重写它” 回顾从前老源代码,会有一种想要返工写成较大块集群冲动和诱惑。丑陋逻辑语句,还有冗长语法,导致代码非常难以阅读!...这难道不像我们自己编程故事正兴致勃勃地在构建着什么,但是突然之间,函数输出了一个致命错误。 所以,现在你必须回过头去删除一些代码块,以找出错误发生行号。...调试是必须要采取步骤,进两步,退一步。盯着代码数个小时,以为函数名或变量作用域中有哪里搞错了,最后才发现是遗漏了一个括号,滋味,酸爽得不要不要。所有这些时间都因为一个小小语法错误而浪费。...当涉及到比较基础前端 HTML / CSS / JS 时,我们没有必要写注释。但更复杂脚本和程序却需要一定形式条理组织,当你在几个月后,甚至若干年之后需要再回过头来看的话。

    78320

    面试官:如何对前端项目进行优化

    面试官:认为前端工作中最重要是什么? 答:用户体验! 面试官:如何可以提升用户体验? 答:从提升项目性能开始! 面试官:如何才能提升项目性能呢? 答:对项目进行优化!...面试官:如何对项目进行优化? 答:主要从项目加载时以及运行时两方面进行优化。 面试官:如何进行加载时优化?...因为先加载HTML再加载 CSS,会让用户第一时间看到是无样式且丑陋,为了避免这种粗鄙情况发生,所以要将 CSS 文件放在头部了。...if-else 对比switch:判断条件越多,越倾向于使用 switch 而不是 if-else。不过switch 只能用于 case 值为常量分支结构,而if-else 更加灵活。...不要覆盖原生方法:无论JS代码如何优化,执行效率都比不上原生方法。当原生方法可用时,我们尽量使用它们。 降低CSS 选择器复杂度:浏览器读取选择器,遵循原则是从选择器右边到左边读取。

    47820
    领券