编写if语句的新方法

时间:2012-06-20 13:54:22

标签: javascript if-statement short-circuiting

我在搜索网站的源代码时找到了以另一种方式(我认为)编写if语句的方法。

而不是:

if(a)b;

或:

a?b:'';

我看了:

!a||b;

第三种方式与前两种相同吗?如果是的话,我们为什么要使用第三种方式?

3 个答案:

答案 0 :(得分:4)

第三种方式与之前的方式相同。使用它的一个参数是保存字节。反对使用它的强烈论据是可读性。您最好专注于编写代码时的可读性,并使用最小化器(例如Google Closure Compiler)来保存字节。

它可以更短:

a && b;
/*  !a||b  means:
 (not a) OR b
    which is equivalent to
 a AND b
    which turns out to be
 a && b
*/

答案 1 :(得分:4)

欢迎使用short-circuit evaluation的概念。这是逻辑运算符的众所周知的属性,用于不同的语言。大多数情况下,这将被用作正确的if或任何其他流控制语句中的子表达式,或者表达足够短的条件,以便以这种方式保留可读性,或者通过自动转换来节省字节。

甚至还有关于这些问题的标记:

答案 2 :(得分:1)

有时可以在不评估所有子表达式的情况下计算布尔表达式的结果。如果我们A||BA为真,则无需评估B,因为无论如何结果都是真的。此行为称为&#34;快捷方式布尔评估&#34;并且在大多数编程语言中都是事实上的标准。它允许编写if (i < A.length && A[i] == ...)之类的表达式而不评估A[i]操作数,如果i值不正确,可能会导致异常。

在这种特殊情况下,!a||bif(a)b相同,是的,但是这些代码的可读性和可维护性是一个问题。