दिलचस्प पोस्ट
एंड्रॉइड में एक फ़ाइल अटैचमेंट के साथ एक ईमेल कैसे भेजें मैं PHP में कैसे एक UTF-8 सीएसवी आउटपुट कर सकता हूं जो Excel ठीक से पढ़ा जाएगा? सफ़ल पाठ 2 में अलग फ़ाइल प्रकार के लिए डिफ़ॉल्ट सिंटैक्स सेट करें पायथन स्रोत कोड एन्कोडिंग को परिभाषित करने का सही तरीका मैं PyCharm कैसे बता सकता हूँ कि किस प्रकार के पैरामीटर होने की उम्मीद है? linq केस बयान Q_OBJECT 'vtable के लिए अपरिभाषित संदर्भ' फेंकने JQuery के साथ फॉर्म फ़ील्ड साफ़ करें एक पूरे व्यू का एक स्क्रीनशॉट लें वस्तु क्षेत्र के आधार पर एक सरणी क्रमबद्ध करें जब एक UIScrollView स्क्रॉलिंग समाप्त हो गया है, तो इसका पता कैसे लगा? Google की होस्ट किए गए jQuery का उपयोग करने का सबसे अच्छा तरीका है, लेकिन Google पर मेरी होस्टेड लाइब्रेरी पर वापस आना विफल रहता है मैं एकल छवि में सभी छवियों को डाउनलोड करने के लिए Wget का उपयोग कैसे करूँ? अपरिभाषित व्यवहार और अनुक्रम अंक मिश्रित मोड विधानसभा संस्करण 'v1.1.4322' के विरुद्ध बनाया गया है

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

जावास्क्रिप्ट में मान क्या 'झूठे' हैं , जिसका अर्थ है कि वे 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