2013-08-04 47 views

回答

3

他們是等價的。

但是,如果輸錯!==第一個將導致一個無效的分配錯誤。有些人喜歡這樣,因爲輸入=而不是==相當容易,但前者並不總是意外。

您可以在Annotated ES5上看到有關==運算符的規範的精確規則。

3

他們評估的是同樣的事情,但最好選擇(someVariable != null),因爲另一種方法是Yoda condition。它涉及可讀性。

0

第一個可能是someVariable更好的其實是一個很長的的參數列表的功能。乍一看你的意圖會更容易看到。否則,我總是使用第二個。

0

考慮您希望此:

if (number == 42) { /* ... */ } 
// This checks if "number" is equal to 42 
// The if-condition is true only if "number" is equal to 42 

現在,想象一下你忘了應該有一個雙=,你只寫一個=代替:

if (number = 42) { /* ... */ } 
// This assigns 42 to "number" 
// The if-condition is always true 

這樣的錯誤是很常見的,可以在允許條件內的變量賦值的編程語言中很難檢測到。

現在,考慮扭轉你的病情的順序:

if (42 == number) { /* ... */ } 
// This checks if "number" is equal to 42 
// The if-condition is true only if "number" is equal to 42 

42 == number的行爲是完全一樣的number == 42行爲。

但是,如果再犯同樣的錯誤提到上文(你忘了應該有一個雙=,你只寫一個=代替),其行爲已不再是一樣的:

if (42 = number) { /* ... */ } 
// This produces an error 

因此,一些人們傾向於顛倒其條件的順序,因爲它使得常見的錯誤更易於檢測。這種「反轉」條件被稱爲Yoda conditions

在不允許在條件語句(例如Python或Swift)中進行變量賦值的編程語言中,使用Yoda條件沒有任何優勢,並且通常不鼓勵使用它們。在其他語言(如JavaScript或PHP)中,Yoda條件可能非常有用。然而,最終,這仍然主要取決於您的個人偏好或您的項目需要的任何編碼標準。

Wordpress & Symfony是兩個流行的開源項目,其中尤達條件是編碼標準的一部分。

相關問題