if语句的不同语法

Ran*_*lue 2 javascript

有时用if语句替换语句是否有意义&&?我的意思是替换

if(a) {
    b();
}
Run Code Online (Sandbox Code Playgroud)

通过

a && b();
Run Code Online (Sandbox Code Playgroud)

这些表格是否相同?在某些情况下是否推荐使用terser风格?

sti*_*vlo 5

是的,它们是等价的.当然,if它更具可读性.

&&是逻辑AND运算符,为了进行有效的评估,它可以简化:如果语句的左侧部分返回一个假值,则不评估第二部分,并返回整个表达式false.

如果语句的左侧部分具有truthy值,则评估第二部分以确定结果.

使用表达式a && b();,您正在使用此运算符的副作用(快捷方式机制),您没有使用逻辑AND运算结果.虽然它有效,但我不推荐它.