[英]Why Date comparison is showing weird behavior in javascript?
當我在javascript中使用日期比較時,在瀏覽器控制台中我確實執行了以下操作。
new Date() >= new Date()
返回true
new Date() <= new Date()
返回true
這看起來很好,因為我認為兩者是平等的,如果我是正確的話
new Date() == new Date()
應該返回true
有趣的是它返回了錯誤 。 然后我也在下面進行了操作
new Date() > new Date()
返回false
new Date() < new Date()
返回false
new Date() != new Date()
返回true
我的假設也很好。
如果新的Date() s都返回相同的時間,則==應該返回true以及> =和<= ,其他明智的是>或<應該返回ture為!=返回true 。
下表包括不同案例的預期結果和實際結果。
為什么ACTUAL結果列不遵循其前面的任何列?
使用Date.getTime
來比較時間戳,否則你只是比較我們知道不一樣的對象。
var d1 = new Date(), d2 = new Date(); function fullCompare(a, b) { console.log(a == b, a <= b, a >= b, a < b, a > b); } fullCompare(d1, d2); fullCompare(d1.getTime(), d2.getTime());
像你正在做的那樣檢查相等性來比較對象的引用 。 要比較對象本身的實際值,最常見的做法是調用getTime()
方法,該方法將返回自1970-01-01 00:00:00 UTC以來的毫秒數。
因此,以下代碼將返回true
:
(new Date()).getTime() == (new Date()).getTime()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.