2017-03-01 135 views
2

我有下面的代碼段,它按預期工作。其中x是一個變量變量===常數和常量===變量有什麼區別

var myVariable = (x === 'A' || x=== 'B') ? 'sui' : 'pai'; 

但關閉編譯器將其轉換爲

var myVariable = ('A' === x || 'B'=== x) ? 'sui' : 'pai'; 

,這也是working.Can請你告訴我第二個片段是如何比第一個更好的。謝謝。

+2

請參閱[尤達條件](https://en.wikipedia.org/wiki/Yoda_conditions)。但在我看來,使用棉絨來捕捉像這樣的錯誤要好得多。 – str

+0

@str謝謝。該鏈接真的很有幫助 – brk

回答

6

人類程序員sometimes do this以確保它們不會混淆=賦值運算符與等於==運算符。

如果您錯誤地使用constant = variable而不是constant == variable,編譯器或解釋器將產生警告或錯誤。 Chrome瀏覽器,例如,做到這一點:

> 'A' = x 
VM207:1 Uncaught ReferenceError: Invalid left-hand side in assignment 

我不知道爲什麼transpiler會打擾,如果它足夠聰明,能夠交換的參數,以防止運行時錯誤,因爲它應該也可以聰明到足以在傳遞時間產生相同的警告。

相關問題