當我們比較10 ==「10」。 JavaScript給出的輸出爲真。這是否意味着第一個操作數10(Number
)被轉換爲「10」(String
),反之亦然?如何在JavaScript中使用10 ==「10」的情況下工作==?
回答
在此document10 == "10"
使用表意味着代碼表現爲A === ToNumber(B)
即字符串被轉換爲數字
做的雙等於嘗試是,將其轉換兩個操作數常見的數據類型。它會嘗試將這兩個值轉換爲整數。如果其中一個被轉換爲int,則兩者都將被轉換並且輸出將被返回。如果兩者均失敗,則會執行字符串比較。
console.log(10 == "10")
console.log(true == "true")
console.log({} == '[object Object]')
原因第二返回false
是因爲parseInt(true)
將返回1 parseInt('true')
將返回NaN
你可以閱讀以下鏈接算法:The Abstract Equality Comparison Algorithm
==
指檢查爲值。
===
表示檢查值以及類型。
所以當比較10 =='10'
時,JavaScript引擎只檢查值,因此true
。
10 === '10'
will yeild false
。 閱讀mozilla的equality comparison瞭解更多信息。
==
運營商將在之後進行任何必要的類型轉換後進行比較。 ===
運營商不會做轉換,所以如果兩個值不是相同的類型===
將簡單地返回false
不管。在我們的案例10 == "10"
類型轉換後,比較的兩邊都是相等的,所以它返回true
。
*經過類型轉換*轉換後的哪一種類型? – 2016-11-26 12:04:30
我不知道這是否完全是一個問題,但如果是的話;首先我需要說你的觀點是正確的,一個隱式類型轉換發生在這裏,因爲==檢查不是相同的平等,第二你可能會發現有用這些鏈接:
JavaScript comparison operators: Identity vs. Equality
Which equals operator (== vs ===) should be used in JavaScript comparisons?
JavaScript - === vs == operators performance
Equality comparisons and sameness
更新:我做了正確的我對CON錯誤版本和演員,感謝@melpomene。
- 1. LEN> 10時的情況
- 2. 如何在JavaScript中將10轉換爲.10或10%?
- 3. 如何在Windows 10中使用ie(7〜10)10
- 4. 如何讓Coldfusion 10在Windows 10中使用IIS 10
- 5. 鍵盤的延長iOS中10在某些情況下
- 6. [* 2..10]如何工作?
- 7. 如何在不使用JavaScript的情況下完成此操作?
- 8. 在沒有jQuery的情況下在10秒後添加css類
- 9. 如何讓elasticsearch.js在不使用require的情況下工作?
- 10. JavaScript不工作在Internet Explorer 10
- 11. Javascript - window.onunload在ie 9/10/11不工作?
- 12. 如何避免在Java中有10個開關情況?
- 13. npm run android在windows下不工作10
- 14. CKDiscoverAllContactsOperation停止在iOS 10下工作
- 15. MVC 4應用程序無法在Windows 10(IIS 10)中工作
- 16. 如何使pushViewController:在以下情況下工作?
- 17. 您可以在不使用「=」符號的情況下寫入「x = 10」嗎?
- 18. 默認情況下,Capistrano如何工作?
- 19. Windows 10 - 如何在沒有觸摸屏的情況下測試觸摸事件?
- 20. 如何在沒有交換的情況下阻止駱駝路線10分鐘
- 21. 如何在不重新刷新SD卡的情況下更新Windows 10 IoT Core?
- 22. ColdFusion 10 REST API:如何在沒有RestSetResponse的情況下設置狀態代碼()
- 23. JavaScript - 是否可以在不使用OR的情況下在一種情況下檢查多個工作日?
- 24. res.render()在一種情況下工作,但不在另一種情況下工作
- 25. 如何使RSACryptoServiceProvider在沒有填充的情況下工作(nopadding)?
- 26. 如何使HTML5在沒有JS或Jquery的情況下工作
- 27. 變量作用域在這種情況下會如何工作?
- 28. 如何在不使用MATLAB中的內置函數的情況下做10倍交叉驗證?
- 29. CFQUERYPARAM ColdFusion中不工作10
- 30. 如何在不輸入「Home」的情況下使操作在HomeController中工作?
最後一句應該是個問題嗎? – melpomene
使用==運算符僅檢查兩個值是否相等。它完全無視這種類型。===運算符檢查類型和值使它成爲一個更嚴格的運算符 – Jackthomson
@TheSETJ我猜它不是完全重複的,因爲OP想知道'=='如何工作 – Rajesh