if语句的不同语法

时间:2011-10-29 16:18:13

标签: javascript

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

if(a) {
    b();
}

通过

a && b();

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

2 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:2)

两种形式都或多或少相同。但是,有一个微妙的区别:

如果陈述只是陈述。他们不会返回或表达价值。

逻辑AND运算符形成一个表达式。它返回或表示一个值。

使用表达式代替语句通常不是一个好主意。这可能会导致意想不到的结果。例如,当在小书签中使用时,如果表达式没有空白,那么文档将被表达式替换。

作为一般规则,总是使用if语句进行代码分支,使用条件运算符表示两个不同表达式中的一个,并使用逻辑AND和OR运算符作为 guard 默认值分别表达。

语句和表达的概念是所有语言的基础。甚至是自然语言(与句子和短语相比)。我们使用它们都是有原因的。将它们混合起来通常不是一个好主意。此外,它们是其他程序员的一种文档形式,更易于阅读和调试。

希望这篇文章不会落在不经意的耳朵上。 =)