在搜索网站的源代码时,我找到了一种以if
另一种方式(我认为)编写语句的方法。
代替:
if(a)b;
或者:
a?b:'';
我读:
!a||b;
第三种方式和前两种方式一样吗?如果是,为什么我们要使用第三种方式?
在搜索网站的源代码时,我找到了一种以if
另一种方式(我认为)编写语句的方法。
代替:
if(a)b;
或者:
a?b:'';
我读:
!a||b;
第三种方式和前两种方式一样吗?如果是,为什么我们要使用第三种方式?
第三种方式与前一种方式相同。使用它的一个论点是节省字节。反对使用它的一个强有力的论据是可读性。您最好在编写代码时关注可读性,并使用最小化器(例如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
*/
布尔表达式的结果有时可以在不评估所有子表达式的情况下进行评估。如果我们有A||B
, 并且A
是真的,那么甚至不需要评估B
,因为无论如何结果都会是真的。这种行为称为“快捷布尔评估”,是大多数编程语言中的事实标准。它允许在if (i < A.length && A[i] == ...)
不评估操作数的情况下编写表达式,如果值不正确A[i]
,可能会导致异常。i
在这种特殊情况下,!a||b
与 相同if(a)b
,是的,但是此类代码的可读性和可维护性是一个问题。