दिलचस्प पोस्ट
64-बिट मशीन पर 32-बिट मोड में मैं VBScript कैसे चलाऊँ? ggplot2 और नकारात्मक मूल्यों वाला एक स्टैक्ड बार चार्ट स्काला @ ऑपरेटर कैसे Ubuntu पर बढ़ावा देने के लिए स्थापित करें? क्या कोई div में शब्द शब्द लपेटने का एक तरीका है? आउटपुट कमांड सीएमडी कब्जा दो सूचियों / ट्यूपल्स में जोड़े की एक सूची / टपल को अनपैक करना php: किसी दिए गए स्ट्रिंग में शब्दों के सॉर्ट करें और शब्दों की गणना करें ES6 मॉड्यूल: स्थिर तरीकों या एक से अधिक व्यक्तिगत विधियों का एकल वर्ग निर्यात करें फ्लोट से दोगुने तेज का उपयोग कर रहा है? कैसे एक स्ट्रिंग को एक nullable int में पार्स करने के लिए क्यों asp.net localhost में कुकीज़ बनाने नहीं होगा? एमवीवीएम प्रकाश – अन्य दृश्य मॉडल में संपत्ति का उपयोग कैसे करें सी + + प्रीप्रोसेसर # एक कीवर्ड को परिभाषित करना। क्या यह मानक मानता है? आईफोन सिग्नल स्ट्रेंथ

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

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


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

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

Solutions Collecting From Web of "जावास्क्रिप्ट में सभी झूठे मूल्य"

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

  • 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