我在搜索网站的源代码时找到了以另一种方式(我认为)编写if
语句的方法。
而不是:
if(a)b;
或:
a?b:'';
我看了:
!a||b;
第三种方式与前两种相同吗?如果是的话,我们为什么要使用第三种方式?
答案 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
或任何其他流控制语句中的子表达式,或者表达足够短的条件,以便以这种方式保留可读性,或者通过自动转换来节省字节。
甚至还有关于这些问题的标记:short-circuiting。
答案 2 :(得分:1)
有时可以在不评估所有子表达式的情况下计算布尔表达式的结果。如果我们A||B
,A
为真,则无需评估B
,因为无论如何结果都是真的。此行为称为&#34;快捷方式布尔评估&#34;并且在大多数编程语言中都是事实上的标准。它允许编写if (i < A.length && A[i] == ...)
之类的表达式而不评估A[i]
操作数,如果i
值不正确,可能会导致异常。
在这种特殊情况下,!a||b
与if(a)b
相同,是的,但是这些代码的可读性和可维护性是一个问题。