我遇到了一些似乎在解釋器上不一致的東西,雖然我知道它可能是有道理的,我只是不明白它。它與評估真/假值和布爾值的平等有關。真理和謬誤價值的平等(JavaScript)
實施例1:
if (document.getElementById('header')) {
//run code here
}
如果與「頭部」的ID的元素在文件中被發現,因爲對象的存在被認爲是truthy條件爲真。
實施例2:
if (document.getElementById('header) == true) {
// run code here
}
預先假定所引用的元件在文獻中找到。有人向我解釋說,這個條件將被評估爲假,因爲真值不等於布爾值true。
這似乎沒有道理。由於類型強制,對象的存在被認爲是真實的,所以即使數據類型不同,它也應該等於真。
考慮以下幾點:
(false == 0) // evaluates to true
(false === 0) // evaluates to false
這是錯誤的等於當您使用等於0操作是真實的情況。因爲0被認爲是一個虛假值,所以它等於false的布爾值。值是相同的,並且數據類型是不同的。
對我來說,(document.getElementById('header')== true)和(false == 0)是一回事。然而,他們都評估了不同的東西。
有人可以向我解釋爲什麼會出現這種情況嗎?我一直在閱讀對此的不同描述,但似乎沒有人能夠深入解釋它。
https://developer.mozilla.org/en-US/docs/Glossary/Truthy http://james.padolsey.com/javascript/truthy-falsey/ – 2015-02-17 21:32:12
所以布爾(document.getElementById('header) )== true' – zerkms 2015-02-17 21:36:18