這是一個基本的東西,但我發現它值得與大家分享。我觀察到一個代碼壓縮實用程序改變代碼fragement其中一個條件是這樣寫的,javascript中的=='foo'和'foo'== a的區別
if(document.getElementById('foo').value == '6')
到
if('6' == document.getElementById('foo').value)
會以何種方式幫助?
這是一個基本的東西,但我發現它值得與大家分享。我觀察到一個代碼壓縮實用程序改變代碼fragement其中一個條件是這樣寫的,javascript中的=='foo'和'foo'== a的區別
if(document.getElementById('foo').value == '6')
到
if('6' == document.getElementById('foo').value)
會以何種方式幫助?
這是爲了避免分配和錯誤,如果你錯過了兩個=
之一。
if('6' = document.getElementById('foo'))
不會通過(分配給文字),但
if(document.getElementById('foo') = '6')
將靜默失敗。
javascript中的==
不是「強類型」,與===
相反。
對於爲例:
if (1 == '1')
{
//Will pass here.
}
if (1 === '1')
{
//Will not pass here
}
所以==
意味着這兩個操作數的一個在其他類型的鑄造。
我可以'foo' == a
和a == 'foo'
之間看到的唯一區別是,在一種情況下a
澆鑄到字符串,並在另一種情況下'foo'
澆鑄到wathever是a
類型。
這是一個有效的案例。謝謝@grasGeorgeme – vikkee
我知道有些人爲了避免意外的任務而將自己的比較「向後」寫出來,但公用事業公司會這樣做有點奇怪。有兩個'='開始;他們是否擔心你會回去拿走? –
有趣的是,我們只是在今天的工作中談論這個問題,一箇舊的承包商在某些java代碼中執行if(null == someVal)。我知道這是對C/C++的一種回擊,其中if語句將接受任何值,並將1計爲true,其他則計爲false。但是,我知道在Java的情況下,表達式HAS評估爲布爾值,所以這是一個有爭議的問題。我覺得這樣做會讓代碼看起來很奇怪,而且我寧願「冒險」在比較中錯過'='的機會,我坦率地認爲這不太可能,然後讓代碼更難理解。 – CodeChimp