2012-02-10 11 views
7

संभव डुप्लिकेट:
What is the !! (not not) operator in JavaScript?एंड्रॉइड का उपयोग करते समय आईएफ कथन में दो !! एस क्यों?

मैं कुछ कोड के माध्यम से देख रहा हूँ और एक अगर बयान है कि नीचे एक तरह लग रहा है देखते हैं। क्या कोई मुझे बता सकता है कि एक के बजाय दो !! क्यों हैं? मैंने इसे पहले कभी नहीं देखा है और Google पर कुछ भी खोद नहीं सकता क्योंकि यह विशेष चरित्र को अनदेखा कर रहा है।

if (!!myDiv && myDiv.className == 'visible') { 
} 

उत्तर

4

डबल नहीं ऑपरेटर boolean प्रकार के एक चर कास्ट करने के लिए प्रयोग किया जाता है। डबुल एक-दूसरे को रद्द नहीं करते हैं, लेकिन !true या false पर लौटते हैं, तो आपको केवल दो आउटपुट में से एक मिलता है।

उदाहरण के लिए

,

!!0 == true 

तो

!!myDiv == true 

एक बूलियन और सच के खिलाफ यह परीक्षण करने के लिए myDiv डाले। !!myDiv केवल true या false देगा।

+0

वाह, यह अच्छा है। जाम के उत्तर के आधार पर इस लिंक को खोला। http://www.bennadel.com/blog/1784- उपयोग- डबल- नोट- ऑपरेटर- फोर- बूओलियन- टाइप- कैस्टिंग एचटीएम – mrtsherman

+2

प्रश्न में दिए गए उदाहरण में यह भी आवश्यक क्यों है?'If' स्थिति की भविष्यवाणी पहले से ही बूलियन के रूप में व्याख्या की गई है। इसके अलावा, '!! 0! == सच', क्योंकि' 0' झूठा है। –

0

डबल-बैंग (!!) मान को एक वास्तविक बूलियन में परिवर्तित करता है। पहली धमाका "उचित नहीं है" संभावित बुलियन के लिए संभावित रूप से सच्चाई/झूठा मूल्य और दूसरा "नहीं है" यह उचित बूलियन के रूप में क्या होना चाहिए।

0

!! किसी ऑब्जेक्ट को बूलियन में सहयोग करेगा। यह गैर-झूठी मूल्यों के लिए सत्य का मूल्यांकन करेगा। लेकिन यह जादू नहीं है, यह सिर्फ एक डबल नहीं है।

  !!false === false 
      !!true === true 

       !!0 === false 
!!parseInt("foo") === false // NaN is falsy 
       !!1 === true 
      !!-1 === true // -1 is truthy 

      !!"" === false // empty string is falsy 
      !!"foo" === true // non-empty string is truthy 
     !!"false" === true // ...even if it contains a falsy value 

    !!window.foo === false // undefined is falsy 
      !!null === false // null is falsy 

      !!{} === true // an (empty) object is truthy 
      !![] === true // an (empty) array is truthy; PHP 
0
  • & एक बिटवाइज़ comparion (एक मूल्य के> = 0 में जिसके परिणामस्वरूप) है।
  • && एक तार्किक तुलना है (जिसके परिणामस्वरूप सत्य या गलत है)।
  • = असाइनमेंट है (हमेशा सत्य के रूप में मूल्यांकन करता है)।
  • == एक तार्किक तुलना है (जिसके परिणामस्वरूप सत्य या गलत है)।
+0

आपने प्रश्न का उत्तर नहीं दिया है ... – Bojangles

+0

हाँ, मुझे मूर्खतापूर्ण, मुझे एहसास हुआ कि जैसे ही मैंने "पोस्ट" मारा: पी – twilson

0

!! myDiv का मतलब ऑपरेटर से दोगुना है! (बराबर नहीं है)।

myDiv एक वर्ग लगता है,! MyDiv के परिणामस्वरूप एक बुलियन (झूठा या सत्य) और फिर! इस बुलियन को फिर से उलट देगा (परिणामस्वरूप क्लास इंस्टेंस (पॉइंटर) नहीं होता है)।

आप भी लिख सकते हैं (myDiv! = Null)।

व्यक्तिगत रूप से मैं अपना डीआईवी पसंद करता हूं! = शून्य लेकिन !! myDiv छोटा है।

0

यह डबल बैंग ऑपरेटर है - यह मेरेडिव को एक बूलियन मान में परिवर्तित करता है।

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