是什麼這兩個詞的區別:邏輯差異的JavaScript
if(counter % 4 != 0)
if(counter % 4 == !0)
我看不到任何的邏輯差異,但我的計算機做(和我100%肯定我的電腦比我更合乎邏輯)。
所有洞見讚賞。 !
是什麼這兩個詞的區別:邏輯差異的JavaScript
if(counter % 4 != 0)
if(counter % 4 == !0)
我看不到任何的邏輯差異,但我的計算機做(和我100%肯定我的電腦比我更合乎邏輯)。
所有洞見讚賞。 !
的!
(不)運營商在JavaScript執行強制類型轉換 - 它會嘗試將該值轉換爲布爾(true或false)值。 0在JavaScript中是falsy,所以!0與false相反,即true。
所以你的第一個if
仍然是相同的:
if(counter % 4 != 0)
但第二個實際上是
if(counter % 4 == true)
這是絕對不一樣的。
編輯:
的JavaScript也確實使用非嚴格!=
和==
運營商時(相對於嚴格!==
和===
)類型強制所以在這種情況下,如果counter % 4
變爲1,這將評估爲true
因爲1
是真實的價值。
這裏的falsy值在JavaScript中的列表:http://www.sitepoint.com/javascript-truthy-falsy/
如果您嘗試它可能會更有意義閱讀代碼文本:
counter % 4
一樣not 0
?not 0
,或!0
,使在Javascript true
,所以它會是:
counter % 4
一樣true
?該聲明的結果取決於counter
的值。請參閱Google Chrome的Javascript控制檯以進行說明:
注意'== true'上的類型強制將是'ToNumber()'([11.9.3](http://es5.github.io/#x11.9.3)的[6-7]),導致'== 1'而不是測試'counter%4'的*真實性*。 – 2013-04-22 02:45:28
很好的解釋和有用的額外見解。謝謝你,先生。 – user2240091 2013-04-22 03:02:13