2013-02-06 91 views
2

這是一個基本的東西,但我發現它值得與大家分享。我觀察到一個代碼壓縮實用程序改變代碼fragement其中一個條件是這樣寫的,javascript中的=='foo'和'foo'== a的區別

if(document.getElementById('foo').value == '6') 

if('6' == document.getElementById('foo').value) 

會以何種方式幫助?

回答

6

這是爲了避免分配和錯誤,如果你錯過了兩個=之一。

if('6' = document.getElementById('foo')) 

不會通過(分配給文字),但

if(document.getElementById('foo') = '6') 

將靜默失敗。

+0

這是一個有效的案例。謝謝@grasGeorgeme – vikkee

+1

我知道有些人爲了避免意外的任務而將自己的比較「向後」寫出來,但公用事業公司會這樣做有點奇怪。有兩個'='開始;他們是否擔心你會回去拿走? –

+1

有趣的是,我們只是在今天的工作中談論這個問題,一箇舊的承包商在某些java代碼中執行if(null == someVal)。我知道這是對C/C++的一種回擊,其中if語句將接受任何值,並將1計爲true,其他則計爲false。但是,我知道在Java的情況下,表達式HAS評估爲布爾值,所以這是一個有爭議的問題。我覺得這樣做會讓代碼看起來很奇怪,而且我寧願「冒險」在比較中錯過'='的機會,我坦率地認爲這不太可能,然後讓代碼更難理解。 – CodeChimp

0

javascript中的==不是「強類型」,與===相反。

對於爲例:

if (1 == '1') 
{ 
    //Will pass here. 
} 

if (1 === '1') 
{ 
    //Will not pass here 
} 

所以==意味着這兩個操作數的一個在其他類型的鑄造。

我可以'foo' == aa == 'foo'之間看到的唯一區別是,在一種情況下a澆鑄到字符串,並在另一種情況下'foo'澆鑄到wathever是a類型。

相關問題