这段if可以还有优化的余地吗吗?

发布于 2022-09-12 23:15:23 字数 188 浏览 26 评论 0

    这段if可以还有优化的余地吗吗?
            if (this.switchNum == 1) {
                this.switchNum = 2
            } else {
                this.switchNum = 1
            }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

夜吻♂芭芘 2022-09-19 23:15:23

用三元运算符也可以
this.switchNum = this.switchNum == 1 ? 2 : 1;

嘿看小鸭子会跑 2022-09-19 23:15:23

仅针对题主特殊业务,this.switchNum 要么是1, 要么是2:
this.switchNum = 3 - this.switchNum

夏花。依旧 2022-09-19 23:15:23

三元运算符就可以,或者不改其实也没关系。这种奇奇怪怪的逻辑写成这样再加一句注释还方便后面维护和新人阅读代码

雨后彩虹 2022-09-19 23:15:23

我觉得没必要改这样就挺好了

或者就是改成3元运算符

非得整成异或, 其他人看到的话还得懵一会

謌踐踏愛綪 2022-09-19 23:15:23
// 原代码
if (this.switchNum == 1) {
  this.switchNum = 2
} else {
  this.switchNum = 1
}

一般像这种简单的if...else分支语句,我会第一时间考虑三元运算符下的方法。
改造如下:

this.switchNum = this.switchNum == 1 ? 2 : 1

可以分开解析:

// 赋值符“=”后边这段代码如下
this.switchNum == 1 ? 2 : 1

其中?之前的是条件,也就是判断this.switchNum是否与1相等
:前边代表前边结果成立返回的值
:后边代表前边结果不成立返回的值
所以这段代码(this.switchNum == 1 ? 2 : 1)要么返回2,要么返回1,完全取决于this.switchNum == 1还是this.switchNum != 1
那么既然值得到了,就赋值给this.switchNum即可
最终的结果就是上边写的:

this.switchNum = this.switchNum == 1 ? 2 : 1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文