2012-06-10 8 views
5

जावास्क्रिप्ट में डबल ऑपरेटर का उपयोग करने के लिए, एक स्पष्ट रूपांतरण को इंगित करने के अलावा कोई फायदा है? ऐसा लगता है कि इन दिनों, लोग डबल एपीआई का उपयोग करके नए एपीआई के अस्तित्व की जांच करना पसंद करते हैं, लेकिन मैंने कभी भी इसका कोई फायदा नहीं पढ़ा है।जावास्क्रिप्ट में डबल नहीं (!!) बनाम प्रकार का दबाव

if(!!window.File) 
    // The File API is supported. 
else 
    // Your browser sucks. 

एक बात है कि मैं पढ़ लिया है यह एक संक्षिप्त, अस्पष्ट बूलियन के लिए डाली टाइप करने के लिए रास्ता है कि, तथापि, जब इस संदर्भ में प्रयोग किया जाता वस्तु बूलियन वैसे भी जब से हम करने के लिए जाँच कर रहे हैं करने के लिए मजबूर हो जाएगा ऑटो है देखें कि यह परिभाषित किया गया है या नहीं।

संक्षेप में, लोग इंजन के शीर्ष पर दो बुलियन ऑपरेशन क्यों करते हैं?

+0

जैसा कि लिंक द्वारा दिखाया गया है, यह वैश्विक रूप से एक बूलियन में रूपांतरण करता है। यहां मुख्य रूप से कोड को और अधिक पठनीय बनाने के उद्देश्य से किया गया है, जिसका अर्थ है कि केवल बूलियन मान की आवश्यकता है। –

+0

मुझे पता है कि वास्तव में क्या !! छद्म ऑपरेटर करता है, जो मैंने पूछा नहीं है। – Vreenak

+2

कोई वास्तविक उपयोग नहीं है, यह प्रीटेक्स्ट पठनीयता के लिए एक बुरी आदत है। –

उत्तर

7

मुझे आपके जैसा संदर्भ में ऐसा करने का कोई कारण नहीं दिखता है। यह किसी भी तरह से परिणाम को प्रभावित नहीं करेगा।

केवल समय मैं एक अच्छा विचार के रूप में इस देखना चाहते हैं आप एक समारोह है जो एक bool मान देने के लिए माना जाता है का निर्माण कर रहे है, तो है, और आप, कुछ अन्य मूल्य से यह कास्ट करने के लिए की जरूरत है जैसे ...

function isNotFalsy(val) { return !!val; } 

उदाहरण थोड़ा सा मजबूर हो सकता है, लेकिन आपको विचार मिलता है। आप हमेशा यह सुनिश्चित करना चाहते हैं कि वापसी मूल्य उस प्रकार का है जिस पर उपयोगकर्ता अपेक्षा करेगा।

+0

सर्वोत्तम के रूप में स्वीकृत, @Pointy को इंगित करना चाहते हैं कुछ एपीआई ===/टाइप करने के लिए बूलियन मानों की आवश्यकता है। – Vreenak

1

आपको if अभिव्यक्ति के अंदर !! का उपयोग करने की आवश्यकता नहीं है।
इसका उपयोग मूल्य को बुलियन में परिवर्तित करने के लिए किया जा रहा है, और if डिफ़ॉल्ट रूप से करता है।

var x = ""; // a falsy value 
!x // true 
!!x // false 

if (x) === if (!!x) 
+0

उत्तर देने के लिए धन्यवाद, लेकिन मुझे यह पता है। सवाल यह था कि यदि किसी कथन में इसका उपयोग करने का कोई फायदा है क्योंकि यह एक आम प्रथा है। – Vreenak

+2

@ वात्किन्सज। मेरा मानना ​​है कि मैंने पहली पंक्ति में उस प्रश्न का उत्तर दिया ... – gdoron

+0

आपने कहा कि यह अनावश्यक है। मैंने इस सवाल में इस बात की ओर इशारा किया। मुझे कथन के अंदर प्रसार के लिए किसी भी फायदे या स्पष्टीकरण के रूप में कोई जवाब नहीं दिख रहा है। – Vreenak

संबंधित मुद्दे