JavaScript 中的IF判断竟然可以这样写,效率更高

本文探讨了JavaScript中如何通过逻辑与运算符、三元运算符、Switch语句和键-值对象优化if语句,以实现更短、更清晰的代码,强调了考虑替代方法的重要性以提高代码效率和优雅性。
摘要由CSDN通过智能技术生成

当然,它们是创建控制流的一种简单而方便的方式,但你可以写下数十亿行条件性的 JavaScript 代码,而不需要一个 if 语句。

而且有很多情况下,使用不同的结构会更清晰地展示你想要做的事情 —— 只要我们还在为人类编写代码,这就是我们不能忽视的一点。

更不用说更低的冗余性和更短的代码了……

所以:让我们来看看一些强大的 if 语句升级📈。

1. 逻辑与(&&)运算符

逻辑与 && 运算符,是 JavaScript 独有的。

有了它,我可以快速地从这个:
在这里插入图片描述

转变成这个:
在这里插入图片描述

我已经消除了嵌套,并将分支逻辑压缩成了一行代码

当有一个 if 但没有匹配的 else 时,你想要使用它;尤其是当 if 块只有一行时。

即使有多行,你也可以将它们抽象成一个单独的函数,然后再次应用 &&。毕竟,在我们的例子中,console.log() 本身就是一个抽象。

所以这个:
在这里插入图片描述

转变成了这个:
在这里插入图片描述

2. 三元运算符

三元运算符让我们将 if-else 语句压缩成了一行代码

当所有条件情况只涉及将一个值赋给同一个变量时,它们是很棒的 if-else 替代方案。

举个例子:
在这里插入图片描述

尽管 DRY 原则并不是一条硬性规则,但对于这种情况,如果我们使用三元运算符来避免两次编写变量赋值,事情将会变得更加清晰:
在这里插入图片描述

现在,我们甚至可以使用 const 来保持事务的不可变性和纯粹性。

嵌套的三元运算符

当我们的 if-else 语句中有 3 个或更多的分支,或者我们嵌套了 if,更清晰的三元替代方案将包含内部的三元运算符。

所以这个:
在这里插入图片描述

变成了这个:
在这里插入图片描述

有些人对嵌套的三元运算符感到困惑,认为它们复杂而难以理解。但我认为这更多是个人偏好,或者是格式不佳。

而且,关于格式,我们有像Prettier这样的工具已经做了这个工作(只做这个工作)几个世纪了:

只要有足够的缩进,你应该不会在可读性方面遇到问题。如果分支逻辑比上面的例子复杂得多,你可能想要将一些低级别逻辑移动到前置变量或小函数中。

说到可读性,Prettier 正在改变他们的嵌套三元风格;他们想出了一些非常独特的东西。
在这里插入图片描述

当前的风格使用了一种巧妙的扁平和树状嵌套的组合;在真实分支中为嵌套的三元运算符添加了进一步的缩进,但在假分支中保持了扁平。

但很快 Prettier 将会像这样格式化上面的代码:
在这里插入图片描述

主要的变化是 ? 现在都在同一行的结束位置,而不是下一行。

3. Switch 语句

你会在像 Java、C# 和 Dart 这样的 C 风格语言中找到这个 —— 在这些语言中,它看起来完全一样,只有一些语义上的区别。

如果三元运算符最适合为一个变量生成输出,那么 switch 语句最适合处理 来自 一个变量的输入:
在这里插入图片描述

switch 语句的独特之处在于可以省略每个 case 结尾的 break,并让执行“穿透”到下一个 case:
在这里插入图片描述

大多数其他语言中的 switch-case 都允许这样做,但 C# 是一个值得注意的例外。

4. 键-值对象

键-值对象让我们能够将输入声明性地映射到输出。

当我在创建 React Native 应用中的屏幕时,这对我来说真是太好了 —— 每个屏幕都有自己的加载、错误和成功状态。

这是我们应用中一个屏幕的片段:
在这里插入图片描述

总结思考

因此,if 语句并不坏,它们非常适合以一种易于理解的方式编写条件逻辑。

但重要的是要考虑替代方法,使代码更短、更清晰,甚至更具表现力。这并不是要完全消除 if 语句,而是要采用有效的技术,使我们的代码更高效、更优雅。

  • 29
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值