2
我正在評估在今天控制檯的東西,當我輸入,併成爲好奇以下是瞎搞:傻JS比較
1 === 1 === 1
評估爲false
但
1 == 1 == 1
評估爲true
是第一次比較試圖評估整體的1 === 1
類型?
什麼是這種現象的原因?
我正在評估在今天控制檯的東西,當我輸入,併成爲好奇以下是瞎搞:傻JS比較
1 === 1 === 1
評估爲false
但
1 == 1 == 1
評估爲true
是第一次比較試圖評估整體的1 === 1
類型?
什麼是這種現象的原因?
簡單的答案是,==
嘗試類型轉換而===
沒有。
的兩個實施例中評價的順序是相同的,並且是這樣的:
(1 === 1) === 1
(1 == 1) == 1
所以第==
或===
比較完成,其結果被用作操作數的第二==
或===
。就像這樣:
(1 === 1) === 1
// v v
(true) === 1
(1 == 1) == 1
// v v
(true) == 1
所以你可以看到,我們現在真的在談論:
true === 1
與
true == 1
所以不同的結果,從這樣一個事實正如我上面提到,該===
不會嘗試轉換任何類型,而==
會嘗試將它們轉換爲匹配的類型。
所以無需轉換,則顯然true === 1
將是false
因爲他們是不一樣的價值,但在true == 1
的情況下,true
被轉換爲數字,和值true
的數字轉換始終最終成爲數1
,所以現在這樣:
true == 1
被轉換成這樣的:
1 == 1
這是清楚沒錯。
,所以該完整演練是這樣的:
(1 == 1) == 1
// v v
(true) == 1
// v v
1 == 1
第1'說1 =布爾值true,但 第二轉換Boolean如果1 – MatthewMartin 2014-12-05 15:48:21
[1 === 1 === 1 => true === 1 => false]和[x = true; X == 1 =>真] http://www.w3schools.com/js/js_comparisons.asp – SilentTremor 2014-12-05 16:08:27
肯定,這是很有意義的。這也意味着'0 == 0 == 1'將是真實的,以及隨後。 – 2014-12-05 16:11:08