我發現了一種在搜索網站源代碼時以另一種方式編寫if
語句的方法(我認爲)。編寫if語句的新方法
相反的:
if(a)b;
或:
a?b:'';
我讀:
!a||b;
是第三條道路一樣的前兩個?如果是的話,爲什麼我們會用第三種方式?
我發現了一種在搜索網站源代碼時以另一種方式編寫if
語句的方法(我認爲)。編寫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
*/
歡迎的short-circuit evaluation概念。這是邏輯運算符衆所周知的屬性,用於不同的語言。大多數情況下,這將用作適當的if
或任何其他流控制語句中的子表達式,或者表達足夠短的條件,以便以這種方式保持可讀性,或者通過自動轉換來保存字節。
甚至有關於那些問題的標籤:short-circuiting。
有時可以評估布爾表達式的結果而無需評估所有子表達式。如果我們有A||B
,並且A
爲真,則無需評估B
,因爲結果無論如何都是正確的。這種行爲稱爲「快捷布爾評估」,在大多數編程語言中都是事實標準。它允許編寫諸如if (i < A.length && A[i] == ...)
之類的表達式,而不評估A[i]
操作數,如果i
值不正確,可能導致異常。
在這種特殊情況下,!a||b
與if(a)b
是一樣的,但是這種代碼的可讀性和可維護性是一個問題。
'(不是假的)或假的'相當於'假'和'假'?真? ) – raina77ow
你的DeMorgans生鏽了,先生。 – jbabey
a && b不等於!a || b邏輯上。然而,如果a是真的,那麼&& b只評估b。 – geekchic