有时用if
语句替换&&
语句是否有意义?我的意思是替换
if(a) {
b();
}
通过
a && b();
这些表格是否相同?在某些情况下是否推荐使用terser风格?
答案 0 :(得分:5)
是的,它们是等价的。当然,if
更具可读性。
&&
是逻辑AND运算符,为了进行有效的评估,它可以简化:如果语句的左侧部分返回一个假值,则不评估第二部分,整个表达式将返回{ {1}}。
如果语句的左侧部分具有真值,则评估第二部分以确定结果。
使用表达式false
,您正在使用此运算符的副作用(快捷方式机制),您没有使用逻辑AND运算结果。虽然它有效,但我不推荐它。
答案 1 :(得分:2)
两种形式都或多或少相同。但是,有一个微妙的区别:
如果陈述只是陈述。他们不会返回或表达价值。
逻辑AND运算符形成一个表达式。它返回或表示一个值。
使用表达式代替语句通常不是一个好主意。这可能会导致意想不到的结果。例如,当在小书签中使用时,如果表达式没有空白,那么文档将被表达式替换。
作为一般规则,总是使用if语句进行代码分支,使用条件运算符表示两个不同表达式中的一个,并使用逻辑AND和OR运算符作为 guard 和默认值分别表达。
语句和表达的概念是所有语言的基础。甚至是自然语言(与句子和短语相比)。我们使用它们都是有原因的。将它们混合起来通常不是一个好主意。此外,它们是其他程序员的一种文档形式,更易于阅读和调试。
希望这篇文章不会落在不经意的耳朵上。 =)