दिलचस्प पोस्ट
स्प्रिंग एमवीसी यूटीएफ -8 एन्कोडिंग सी में डायनामिक बहुआयामी arrays के साथ मैं कैसे काम करूं? बाध्यकारी कनवर्टर जीआईटी रीसेट करने के बाद जोड़ा फ़ाइल पुनर्प्राप्त – हार्ड हेड ^ सी के रूप में एक कस्टम वर्ग प्रकार का उपयोग करके C ++ अनारॉर्डेड_मैप अजीब शाखाएं प्रदर्शन 64 बिट प्रक्रिया से 32 बिट कोड कॉलिंग क्या SqlCommand.Dispose () यदि आवश्यक SqlConnection का निपटारा किया जाएगा? मैं विजुअल स्टूडियो के बिना एमएसटीईस्ट का उपयोग कैसे करूं? विंडोज 8 पर कड़ाही: 'घुरघुर' मान्यता प्राप्त नहीं है सीएसवी में सरणी कन्वर्ट एंड्रॉइड 5.1.1 और ऊपर – getRunningAppProcesses () केवल मेरे आवेदन पैकेज को रिटर्न करता है पायथन: ओएस क्या चल रहा है? crti.o फ़ाइल लापता है जावास्क्रिप्ट – कैसे पता लगाया गया है कि दस्तावेज़ लोड हो रहा है (IE 7 / Firefox 3)

क्या <बूलियन अभिव्यक्ति> && कथन () वैसे ही है (<बूलियन अभिव्यक्ति>) कथन ()?

दो समान हैं?

मान लीजिए आपके पास:

var x = true; 

और फिर आपके पास इनमें से एक है:

 x && doSomething(); 

या

 if(x) doSomething(); 

क्या दो वाक्यविन्यास के बीच कोई भिन्नता है? क्या मैंने चीनी का एक अच्छा सा भर में ठोकर खाई?

वेब के समाधान से एकत्रित समाधान "क्या <बूलियन अभिव्यक्ति> && कथन () वैसे ही है (<बूलियन अभिव्यक्ति>) कथन ()?"

कड़ाई से बोलते हुए, वे एक ही परिणाम उत्पन्न करेंगे, लेकिन यदि आप किसी अन्य स्थिति की स्थिति के रूप में पूर्व मामले का उपयोग करते हैं, तो आपको असमान परिणाम मिलेंगे। इसका कारण यह है कि x && doSomething() के मामले में, doSomething() इसकी सफलता को दर्शाने के लिए एक मान वापस करेगा।

नहीं, वे समान नहीं हैं जबकि एक बयान है , AND ऑपरेटर एक अभिव्यक्ति है

इसका अर्थ है कि आप इसका परिणाम किसी अन्य अभिव्यक्ति में इस्तेमाल कर सकते हैं, जो आप एक बयान के साथ नहीं कर सकते हैं:

 var result = x && doSomething(); 

फिर भी, आपके मामले में दोनों का एक ही प्रभाव है। एक है जो अधिक पठनीय है और अपने कार्यक्रम संरचना को बेहतर प्रतिनिधित्व करता है का उपयोग करें; मैं अगर-कथन की सिफारिश करता था

लघु उत्तर: संख्या

लंबा जवाब:

एक ने कहा है @ स्टीव x && doSomething() एक अभिव्यक्ति है ,

जबकि if(x) doSomething(); एक बयान है ,

@ दानियल ली और @ बर्गी द्वारा सुझाए गए अनुसार, लगता है:

  • एक अभिव्यक्ति की गणना की गई है (मान वापस लौटा देना चाहिए)

  • एक बयान घोषित किया गया है (माना जाता है कि यहां कोई मान वापस नहीं लौटाया जाए, इसके बारे में सोचें कि साइड इफेक्ट्स )

यह भ्रमित क्यों है?

  • जेएस हमें लिखने की अनुमति देता है ( thatExpression );
  • जेएस हमें thatExpression; लिखने की अनुमति देता है thatExpression;

दोनों कुछ भी नहीं मानते हैं कुछ भी नहीं के doNothingWithValueOf बयान

कैसे चुनाव करें?

क्या आप _ का उपयोग करते हैं:

  • doSomething() एक के रूप में
    • अभिव्यक्ति, लगता है कि IsMyObjectWhatever() या MyObjectComputedValue() ,
    • या एक बयान के रूप में, ModifyMyObject() लगता है

और फिर: क्या आप x && doSomething() का प्रयोग अभिव्यक्ति के रूप में करते हैं ?

आप इस तरह की thisStatement( thatExpression ); को सोचकर समाप्त कर देंगे thisStatement( thatExpression ); हर जगह, लगता है:

  • () अभिव्यक्ति,
  • ; बयान।

तो मुझे क्यों चुनना चाहिए?

  • स्पष्ट है कि "यह काम करता है।" "यह सही है" के लिए खड़ा नहीं है
  • यदि कम स्पष्ट है, जब यह अंतर बनायेगा:

    • बस लगता है ()(()())()(); सही हो सकता है , (;) गलत है
    • चेक @wwaawaw जावास्क्रिप्ट: एक बयान और एक अभिव्यक्ति के बीच अंतर है?
    • एक्सल रौस्क्मेयर द्वारा अभिव्यक्ति-वि-स्टेटमेंट पोस्ट

एक शब्द संख्या में, दो बयान समान नहीं हैं, हालांकि विशिष्ट परिस्थितियों में आप परिणाम प्रस्तुत करते हैं, समान है।

x && doSomething(); एक अभिव्यक्ति है, पहले x मूल्यांकन, क्योंकि यह एक और है और x बाद से दूसरा तर्क ( doSomething() ) का मूल्यांकन किया जाता है। इस मामले में इसका अर्थ है कि विधि निष्पादित होती है। अगर x झूठे थे तो कुछ () निष्पादित नहीं किया जाएगा क्योंकि अभिव्यक्ति के परिणाम सही नहीं हो सकते।

if(x) doSomething(); एक कथन है एक्स के मान की जांच की जाती है, और अगर यह सच है तो if स्टेटमेंट का दायरा निष्पादित होता है।

मैंने इस बेला को एक साथ रखा है (छोटे बदलावों के साथ)।