दिलचस्प पोस्ट
एकाधिक फ़ाइलों को पढ़ना और उपयोगकर्ता इनपुट के आधार पर गणना की गई गणना तत्वों को लेते समय एक शर्त सही (एलिमेंट अर्रेफेंडर का विस्तार) करने के लिए मूल्यांकन करती है बैच अपडेट / EF5 को हटाएं क्या एक वेब एपीआई एपीआईकंट्रोलर विधि पर लागू एक डिफ़ॉल्ट क्रिया है? माउस व्हील इनपुट को नियंत्रित करने के बजाए कर्सर के नीचे नियंत्रित करने के लिए कैसे करें? जावा का उपयोग कर सेलेनियम वेबड्राइवर में नई विंडो को कैसे संभाल पाएं? स्काला का "पोस्टफिक्स ऑप्स" जेएसएएन स्ट्रिंग से हॅशमैप का निर्माण एसक्यूएल सर्वर में आईपी पते को स्टोर करने के लिए डेटाटाइप AngularJS – पृष्ठों के बीच डेटा पासिंग एसक्यूएल सर्वर varchar स्तंभ से अजीब अक्षर (टोपी के साथ) निकालें एकाधिक अनुप्रयोगों के साथ एक asp.net सदस्यता डेटाबेस का उपयोग एकल साइन ऑन डाउनलोड और प्रिंटिंग से पीडीएफ फाइल को रोकें स्प्रिंग बूट में गर्म स्वैपिंग "जावा हीप स्पेस" और "मेमोरी आउट आउट" प्राप्त करते समय ग्रहण स्मृति सेटिंग्स

जावास्क्रिप्ट में सभी झूठे मूल्य

जावास्क्रिप्ट में मान क्या 'झूठे' हैं , जिसका अर्थ है कि वे if(value) , value ? तरह अभिव्यक्ति में झूठ के रूप में मूल्यांकन करते हैं value ? और !value ?


पहले से ही स्टैक ओवरफ्लो पर झूठी मूल्यों के उद्देश्य के बारे में कुछ चर्चाएं हैं, लेकिन सभी झूठे मूल्यों की सूची में कोई पूर्ण जवाब नहीं दिया गया है।

मुझे एमडीएन जावास्क्रिप्ट संदर्भ पर कोई पूरी सूची नहीं मिली , और मुझे यह पता चलने में हैरान था कि जावास्क्रिप्ट में झूठी मूल्यों की एक पूर्ण, आधिकारिक सूची की तलाश करते समय शीर्ष लेख ब्लॉग लेख थे, जिनमें से कुछ स्पष्ट चूक थे (उदाहरण के लिए, NaN ), और इनमें से कोई भी स्टैक ओवरफ़्लो जैसी प्रारूप नहीं था, जहां क्वार्क्स, आश्चर्य, चूक, गलतियों या चेतावनियों को इंगित करने के लिए टिप्पणियां या वैकल्पिक उत्तर जोड़े जा सकते हैं। इसलिए, यह एक बनाने के लिए समझ में लग रहा था

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट में सभी झूठे मूल्य"

जावास्क्रिप्ट में फल्सी मान

  • false
  • 0 और -0
  • "" और ""
  • null
  • undefined
  • NaN
  • document.all – यह एक अजीब है, यह एक झूठी ऑब्जेक्ट है, जैसे टाइप अप के रूप में undefined । आईई 11 से पहले आईईई में माइक्रोसॉफ्ट-प्रोप्रेटेट्री फंक्शन था, और एचटीएमएल स्पेक को "जावास्क्रिप्ट स्पेसिफिकेशन के जानबूझकर उल्लंघन" के रूप में जोड़ा गया था ताकि IE के लिए लिखी गई साइट्स को एक्सेस करने का प्रयास करने पर ब्रेक नहीं लगेगा, उदाहरण के लिए, document.all.something ; यह गलत है क्योंकि if (document.all) सशर्त टिप्पणियों से पहले आईई का पता लगाने का एक लोकप्रिय तरीका था। देखें क्यों `दस्तावेज़.all` फर्जी है? ब्योरा हेतु

"फल्सी" का अर्थ है कि जावास्क्रिप्ट के आंतरिक ToBoolean फ़ंक्शन false देता false ToBoolean underlies !value , value ? ... : ...; value ? ... : ...; और if(value){...}else{...}

तुलना == इन तीन समूहों के साथ तुलना के लिए:

  • false, 0, -0, "", '' सभी एक दूसरे के साथ == मैच करते हैं
    • उदा। false == "" और '' == 0
  • null, undefined मैच == साथ
    • उदा। null == undefined लेकिन undefined != false
    • यह भी उल्लेख के लायक है कि जबकि typeof null रिटर्न 'object' , null एक ऑब्जेक्ट नहीं है, यह एक पुरानी बग / क्वार्क है जो अनुपालन बनाए रखने के लिए तय नहीं किया गया था। यह एक सच्ची वस्तु नहीं है, और वस्तुएँ सच्चाई हैं (इसके अलावा "जानबूझकर उल्लंघन" document.all जब जावास्क्रिप्ट एचटीएमएल में कार्यान्वित किया जाता है)
  • ना NaN == साथ कुछ भी मेल नहीं खाता है, यहां तक ​​कि स्वयं भी नहीं
    • जैसे NaN != NaN , NaN != false , NaN != null

केवल false मैचों के साथ ===


सच मूल्य जो वास्तव में == false

"सच" का अर्थ है कि जावास्क्रिप्ट के आंतरिक ToBoolean फ़ंक्शन trueजावास्क्रिप्ट की एक ToBoolean बारे में जागरूक होना: यह सच है कि मूल्य के लिए संभव है ( ToBoolean रिटर्न true ), लेकिन यह भी == false

आपको लगता है कि हो सकता है if( value && value==false ){ alert("huh?"); } if( value && value==false ){ alert("huh?"); } एक तार्किक असंभव है जो नहीं हो सकता है, लेकिन यह, के लिए होगा:

  • "0" और '0' – वे खाली-खाली स्ट्रिंग हैं, जो सत्य हैं, लेकिन जावास्क्रिप्ट के == मिलान के बराबर स्ट्रिंग्स के साथ (जैसे 42 == "42" )। चूंकि 0 == false , यदि "0"==0 , "0"==false
  • new Number(0) और new Boolean(false) – वे वस्तुओं हैं, जो सच्चाई हैं, लेकिन == उनके मूल्यों को देखता है, जो कि == false
  • 0 .toExponential();0 बराबर एक संख्यात्मक मूल्य वाला एक ऑब्जेक्ट
  • ऐसा कोई भी निर्माण जो आपको एक प्रकार के रूप में लपेटा गया है जो सत्य है
  • [] , [[]] और [0] ( जावास्क्रिप्ट समानता तालिका लिंक के लिए धन्यवाद cloudfeet )

कुछ और सत्य मान

ये केवल कुछ मान हैं जो कुछ लोगों को झूठी होने की उम्मीद कर सकते हैं, लेकिन वास्तव में सत्य है।

  • -1 और सभी गैर शून्य नकारात्मक संख्या
  • ' ' , " " और सभी गैर-खाली स्ट्रिंग, भले ही वे सिर्फ सफेद स्थान हो
  • typeof से कुछ भी, जो हमेशा एक गैर-खाली स्ट्रिंग देता है, उदाहरण के लिए:

    • typeof null ( एक लंबे समय तक बग / शंकु के कारण स्ट्रिंग 'object' देता है)
    • typeof undefined (स्ट्रिंग 'undefined' )
  • कोई भी वस्तु (ध्यान रखें कि null वास्तव में एक वस्तु नहीं है), जिसमें शामिल हैं:

    • {}
    • []
    • function(){} (फ़ंक्शन के रूप में परिभाषित कोई भी चर, खाली फ़ंक्शन सहित)
    • कोई नियमित अभिव्यक्ति
    • new के साथ बनाया गया कोई भी (अन्य के साथ निर्मित अन्यथा गलत मूल्यों सहित, ऊपर देखें)

true , 1 , "1" और [1] == साथ एक-दूसरे की तुलना में true हो।

सिर्फ झूठी मूल्यों के @ यूज़र 568458 की सूची में जोड़ने के लिए:

  • पूर्णांक संख्या 0 के अतिरिक्त, दशमलव संख्या 0.0, 0.00 या कोई भी शून्य वाला नंबर भी एक गलत मूल्य है।

     var myNum = 0.0; if(myNum){ console.log('I am a truthy value'); } else { console.log('I am a falsey value'); } 

    कोड स्निपेट प्रिंट के ऊपर I am a falsey value

  • इसी तरह संख्या 0 का हेक्स प्रतिनिधित्व भी एक झूठा मूल्य है जैसा कि कोड स्निपेट नीचे दिखाया गया है:

     var myNum = 0x0; //hex representation of 0 if(myNum){ console.log('I am a truthy value'); } else { console.log('I am a falsey value'); } 

    कोड स्निपेट के ऊपर फिर से छापता है I am a falsey value

गैर-रिक्त स्ट्रिंग "false" बारे में मत भूलें, जो true लिए मूल्यांकन करता true