请问(一个判断条件)&& (多条执行语句,用逗号隔开)是什么语法的简写?

例如:

this.audio.paused && (this.audio.play(), this.dom.playbutton.classList.add("skPlayer-pause"), this.dom.cover.classList.add("skPlayer-pause"));

这句话用普通写法是这样的吗?

if (this.audio.paused) {
    if (!isLoaded) {
        this.audio.load();
        isLoaded = true;
    }
    this.audio.play();
    this.dom.playbutton.classList.add("skPlayer-pause");
    this.dom.cover.classList.add("skPlayer-pause");
}

似乎运行的结果不是一样的。

求指教

阅读 4.5k
3 个回答

短路逻辑

A&&B当A为false的时候B不会继续运行了,因为A已经false了,不管B是true还是false,都不会影响整体的返回值。

一般对if语句的压缩也都是改成&&的形式

补充:A||B当A为true的时候,B也没必要执行。

(A,B),这种的话就没所谓短路逻辑包括在里面了,其实就是相当于简写了下面这种形式

A;
B;
if (this.audio.paused) {
    this.audio.play();
    this.dom.playbutton.classList.add("skPlayer-pause");             
    this.dom.cover.classList.add("skPlayer-pause");
}

写成普通形式就是 @Captain 写的这样的吧,你下面的代码是不是多加了个isLoaded变量

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题