2010-12-22 4 views
17

में रिटर्न वैल्यू पर डबल विस्मयादिबोधक मैं एचटीएमएल 5 के लिए एक पुस्तक देख रहा हूं और इसमें जेएस का यह छोटा सा हिस्सा शामिल है। डबल विस्मयादिबोधक का मतलब क्या है?जावास्क्रिप्ट

return ! ! document.createElement('video').canPlayType; 
+4

इसे प्यार करने के लिए मिला, प्रोग्रामिंग भाषाओं में उपयोगी नकारात्मक नकारात्मक। और मेरे अंग्रेजी शिक्षक ने कभी भी नकारात्मक नकारात्मक का उपयोग नहीं किया। "मैं कुछ भी नहीं करना चाहता।" एक वाक्य बन जाता है जो शायद अब समझ में आता है। :) –

+1

मैं पहले पूछने से पहले स्टैक ओवरफ्लो खोजने का प्रयास कर सकता हूं। http://stackoverflow.com/questions/784929/what-is-the-operator-in-javascript – KooiInc

+1

इसके बारे में खेद है। मैंने "डबल विस्मयादिबोधक बिंदु जावास्क्रिप्ट" के तहत एक खोज की थी कुछ भी नहीं खींच लिया। – steve

उत्तर

20

! ऑपरेटर को नकारता, और माध्यमिक ! inital निषेध का परिणाम नकारता। यह मूल रूप से जो भी बूलियन (सत्य या गलत) में दायीं तरफ है, टाइप करता है।

!false // true 
!!false // false 

तो अगर विधि तो function जो truthy है परिभाषित किया गया है, true में typecasted कर दिया जाएगा।

document.createElement('video').canPlayType 

तो उपर्युक्त एक कार्य देता है। हम एक समारोह नहीं चाहते हैं, हम एक स्पष्ट बुलियन चाहते हैं, इसलिए हम इसे दो बार नकारात्मक करते हैं और function falsy (0, शून्य, झूठी, खाली स्ट्रिंग, NaN) नहीं है, तो यह इस विधि का समर्थन करने वाले ब्राउज़र के लिए सच हो जाता है।

!!document.createElement('video').canPlayType // true 

यदि विधि समर्थित नहीं है, तो ब्राउज़र undefined वापस करेगा। !undefined सच है, और !true गलत है, तो !!document.createElement('video').LOLfalse

+0

'document.createElement (' video ') नहीं होगा। CanPlayType' एक बुलियन लौटा सकता है? या यह है कि अगर यह 'शून्य' है तो '!! (शून्य) = झूठी'? – hunter

+0

!! (शून्य) == झूठी –

+0

@hunter - document.createElement ('video')। यदि ब्राउज़र वीडियो टैग का समर्थन नहीं करता है तो CanPlayType अपरिभाषित हो जाएगा। –

9

वापस आ जाएगी डबल विस्मयादिबोधक वापस जाने के लिए सही/इनपुट के झूठे परवाह किए बिना एक जावास्क्रिप्ट चाल है। आपके उदाहरण में, यदि कोई ब्राउज़र वीडियो टैग का समर्थन नहीं करता है, तो यह अनिर्धारित वापस आ जाएगा। अपरिभाषित सत्य है। तो !! अपरिभाषित झूठा है। यदि ब्राउज़र वीडियो का समर्थन करता है, तो यह सच हो जाएगा। !! सच भी सच है। यह आपको अपरिभाषित मामले को संभालने से बचाता है।

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