इस की वजह से है कैसे comparison and equality operators जावास्क्रिप्ट काम में (जोर मेरा):
रिलेशनल सार तुलना के लिए (जैसे, < =), ऑपरेंड पहले एक ही करने के लिए पुरातन में बदल जाती है, तो कर रहे हैं तुलना से पहले टाइप करें।
[...]
समानता ऑपरेटर ऑपरेंड धर्मान्तरित अगर वे एक ही प्रकार के नहीं हैं, तो सख्त तुलना लागू होता है। यदि ऑपरेंड नंबर या बूलियन है, तो संभव होने पर ऑपरेटरों को संख्या में परिवर्तित कर दिया जाता है; अन्यथा यदि कोई ऑपरेंड स्ट्रिंग है, तो स्ट्रिंग ऑपरेंड संभव होने पर किसी संख्या में परिवर्तित हो जाता है। यदि दोनों ऑपरेशंस ऑब्जेक्ट्स हैं, तो जावास्क्रिप्ट आंतरिक संदर्भों की तुलना करता है जो ऑपरेट करते समय बराबर होते हैं, उसी ऑब्जेक्ट को स्मृति में देखें।
तो जब दो पल वस्तुओं की असमानताओं की तुलना की जाती है, तो उन्हें पहले संख्याओं में परिवर्तित कर दिया जाता है।
> +moment()
<- 1412332710977
==
समानता की जांच के लिए, क्रम: Moment.js वस्तुओं के लिए, यह आधी रात यूटीसी के यूनिक्स काल, 1 जनवरी 1970
अपने पसंदीदा ब्राउज़र की कंसोल विंडो/नोड आरईपीएल में के बाद से मिलीसेकेंड है दो ऑब्जेक्ट्स के बीच एक संदर्भ तुलना करता है, जो दो अलग-अलग पल उदाहरणों के लिए false
देता है, भले ही वे दोनों एक ही दिनांक/समय के लिए हों।
जावास्क्रिप्ट में डिफ़ॉल्ट .equals()
या operator==()
ओवरलोडिंग की कमी इस व्यवहार को प्रतिद्वंद्वी बनाता है, खासकर अगर आप अन्य भाषाओं से आ रहे हैं।
इसके अलावा, ध्यान दें कि पल के isBefore
/isAfter
कार्यों वास्तव में धीमी गति से कर रहे हैं के रूप में वे दोनों पल तुलना करने से पहले आंतरिक वस्तुओं क्लोन (यह isBefore
/isAfter
के लिए एक वैकल्पिक तर्क जो समय घटक को निर्दिष्ट करने के लिए है, क्योंकि तुलना करें (उदाहरण के लिए 'hour'
) और यह इस बात पर ध्यान दिए बिना कि यह तर्क मौजूद है या नहीं)।
क्षण म्यूटेबल ऑब्जेक्ट्स होने से यहां पीड़ित है, यही कारण है कि यह पहले स्थान पर रक्षात्मक clone()
कर रहा है, और उसके बाद सामान्य पथ को अनुकूलित नहीं किया जा रहा है, जहां यह वास्तव में अनावश्यक है।
क्या आप एक [jsfiddle] (http://jsfiddle.net) प्रदान कर सकते हैं? यह भी समस्या, मैं अनुमान लगा रहा हूं, डेटाटाइम मूल्य के कारण होता है। तिथि पर getTime() का उपयोग करके इसका परीक्षण करें और देखें कि वे बराबर हैं या नहीं। अन्यथा वे उस तिथि से जुड़े मूल्य के बजाय वास्तविक तिथि उदाहरण की तुलना कर सकते हैं। अंत में 'पल()। IsSame() 'का उपयोग करने का प्रयास करें। – Dom
[जावास्क्रिप्ट में दिनांक चर के साथ समस्या का संभावित डुप्लिकेट] (http://stackoverflow.com/questions/16873689/issue-with-date-variable-in-javascript) – Bergi