खोज…


परिचय

सशर्त अभिव्यक्तियाँ, जैसे कि अगर और नहीं, तो बूलियन स्थिति के आधार पर विभिन्न कार्यों को करने की क्षमता के साथ जावास्क्रिप्ट प्रोग्राम प्रदान करते हैं: सही या गलत। यह खंड जावास्क्रिप्ट शर्तों, बुलियन लॉजिक और टर्नरी स्टेटमेंट के उपयोग को कवर करता है।

वाक्य - विन्यास

  • अगर ( शर्त ) बयान ;
  • if ( स्थिति ) statement_1 , statement_2 , ... , statement_n ;
  • अगर ( शर्त ) {
    बयान
    }
  • अगर ( शर्त ) {
    कथन १ ;
    कथन 2 ;
    ...
    कथन_ एन ;
    }
  • अगर ( शर्त ) {
    बयान
    } अन्य {
    बयान
    }
  • अगर ( शर्त ) {
    बयान
    } और अगर ( स्थिति ) {
    बयान
    } अन्य {
    बयान
    }
  • स्विच ( अभिव्यक्ति ) {
    मामला मान 1 :
    बयान
    [टूटना;]
    मामला मान 2 :
    बयान
    [टूटना;]
    मामला मान :
    बयान
    [टूटना;]
    चूक:
    बयान
    [टूटना;]
    }
  • हालत ? value_for_true : value_for_false ;

टिप्पणियों

एक अभिव्यक्ति के मूल्य के आधार पर कोड निष्पादित करके स्थितियां सामान्य कार्यक्रम प्रवाह को तोड़ सकती हैं। जावास्क्रिप्ट में उपयोग करते हुए इस का मतलब है if , else if और else बयानों और त्रिगुट ऑपरेटरों।

इफ / एल्स इफ / एल्स कंट्रोल

अपने सबसे सरल रूप में, if एक शर्त का उपयोग इस तरह किया जा सकता है:

var i = 0;

if (i < 1) {
    console.log("i is smaller than 1");
}

i < 1 की स्थिति का मूल्यांकन किया जाता है, और यदि यह उस ब्लॉक को true करने के लिए मूल्यांकन करता है जो निष्पादित होता है। यदि यह false मूल्यांकन करता false , तो ब्लॉक छोड़ दिया जाता है।

if किसी else ब्लॉक के साथ स्थिति का विस्तार किया जा सकता है। इस शर्त को एक बार ऊपर के रूप में जांचा जाता है, और यदि यह false मूल्यांकन करता है तो एक माध्यमिक ब्लॉक निष्पादित किया जाएगा (जो कि शर्त true होने पर छोड़ दिया जाएगा)। एक उदाहरण:

if (i < 1) {
    console.log("i is smaller than 1");
} else {
    console.log("i was not smaller than 1");
}

else ब्लॉक को मानने से else नहीं होता है, लेकिन if ब्लॉक (वैकल्पिक रूप से एक else ब्लॉक) इस तरह से हो तो:

if (i < 1) {
    console.log("i is smaller than 1");
} else {
    if (i < 2) {
        console.log("i is smaller than 2");
    } else {
        console.log("none of the previous conditions was true");
    }
}

फिर इसे लिखने का एक अलग तरीका भी है जो नेस्टिंग को कम करता है:

if (i < 1) {
    console.log("i is smaller than 1");
} else if (i < 2) {
    console.log("i is smaller than 2");
} else {
    console.log("none of the previous conditions was true");
}

उपरोक्त उदाहरणों के बारे में कुछ महत्वपूर्ण बातें:

  • यदि किसी एक शर्त का true मूल्यांकन किया जाता true , तो उस ब्लॉक की किसी अन्य स्थिति का मूल्यांकन नहीं किया जाएगा, और सभी संबंधित ब्लॉकों ( else ब्लॉक सहित) को निष्पादित नहीं किया जाएगा।

  • else if भागों व्यावहारिक रूप से असीमित है else if की संख्या। ऊपर दिए गए अंतिम उदाहरण में केवल एक है, लेकिन आपके पास जितने चाहें उतने हो सकते हैं।

  • if एक बयान के अंदर की स्थिति कुछ भी हो सकती है जो बूलियन मूल्य के लिए बाध्य हो सकती है, तो अधिक विवरण के लिए बूलियन तर्क पर विषय देखें;

  • if-else-if सीढ़ी पहली सफलता से बाहर है। यही है, ऊपर के उदाहरण में, यदि i का मान 0.5 है तो पहली शाखा निष्पादित होती है। यदि शर्तें ओवरलैप होती हैं, तो निष्पादन के प्रवाह में होने वाले पहले मानदंड निष्पादित होते हैं। दूसरी शर्त, जो सच भी हो सकती है, को नजरअंदाज किया गया।

  • यदि आपके पास केवल एक बयान है, तो उस कथन के चारों ओर के ब्रेसिज़ तकनीकी रूप से वैकल्पिक हैं, जैसे यह ठीक है:

    if (i < 1) console.log("i is smaller than 1");
    

    और यह भी काम करेगा:

    if (i < 1) 
        console.log("i is smaller than 1");
    

    यदि आप एक if ब्लॉक के अंदर कई स्टेटमेंट्स निष्पादित करना चाहते हैं, तो उनके चारों ओर घुंघराले ब्रेस अनिवार्य हैं। केवल इंडेंटेशन का उपयोग करना पर्याप्त नहीं है। उदाहरण के लिए, निम्न कोड:

    if (i < 1) 
        console.log("i is smaller than 1");
        console.log("this will run REGARDLESS of the condition"); // Warning, see text!
    

    के बराबर है:

    if (i < 1) {
        console.log("i is smaller than 1");
    }
    console.log("this will run REGARDLESS of the condition");
    

स्विच स्टेटमेंट

स्विच स्टेटमेंट 1 या अधिक मानों के खिलाफ एक अभिव्यक्ति के मूल्य की तुलना करते हैं और उस तुलना के आधार पर कोड के विभिन्न वर्गों को निष्पादित करते हैं।

var value = 1;
switch (value) {
  case 1:
    console.log('I will always run');
    break;
  case 2:
    console.log('I will never run');
    break;
}

break स्टेटमेंट स्विच स्टेटमेंट से "ब्रेक" हो जाता है और यह सुनिश्चित करता है कि स्विच स्टेटमेंट के भीतर कोई और कोड निष्पादित न हो। यह इस प्रकार है कि अनुभाग परिभाषित हैं और उपयोगकर्ता को "मामलों के माध्यम से" बनाने की अनुमति देता है।

चेतावनी : प्रत्येक मामले के लिए break या return विवरण की कमी का मतलब है कि कार्यक्रम अगले मामले का मूल्यांकन करना जारी रखेगा, भले ही मामला मानदंड न हो!

switch (value) {
  case 1:
    console.log('I will only run if value === 1');
    // Here, the code "falls through" and will run the code under case 2
  case 2:
    console.log('I will run if value === 1 or value === 2');
    break;
  case 3:
    console.log('I will only run if value === 3');
    break;
}

अंतिम मामला default केस है। यदि कोई अन्य मैच नहीं हुआ तो यह चलेगा।

var animal = 'Lion';
switch (animal) {
  case 'Dog':
    console.log('I will not run since animal !== "Dog"');
    break;
  case 'Cat':
    console.log('I will not run since animal !== "Cat"');
    break;
  default:
    console.log('I will run since animal does not match any other case');
}

यह ध्यान दिया जाना चाहिए कि एक मामले की अभिव्यक्ति किसी भी तरह की अभिव्यक्ति हो सकती है। इसका मतलब है कि आप मामले के मूल्यों के रूप में तुलना, फ़ंक्शन कॉल आदि का उपयोग कर सकते हैं।

function john() {
  return 'John';
}

function jacob() {
  return 'Jacob';
}

switch (name) {
  case john(): // Compare name with the return value of john() (name == "John")
    console.log('I will run if name === "John"');
    break;
  case 'Ja' + 'ne': // Concatenate the strings together then compare (name == "Jane")
    console.log('I will run if name === "Jane"');
    break;
  case john() + ' ' + jacob() + ' Jingleheimer Schmidt':
    console.log('His name is equal to name too!');
    break;
}

मामलों के लिए एकाधिक समावेशी मानदंड

चूंकि break या return स्टेटमेंट के बिना "गिरना" मामलों में, आप कई समावेशी मापदंड बनाने के लिए इसका उपयोग कर सकते हैं:

var x = "c"
switch (x) {
   case "a":
   case "b":
   case "c":
      console.log("Either a, b, or c was selected.");
      break;
   case "d":
      console.log("Only d was selected.");
      break;
   default:
      console.log("No case was matched.");
      break;  // precautionary break if case order changes
}

टर्नरी ऑपरेटर

यदि / अन्यथा संचालन को छोटा करने के लिए उपयोग किया जा सकता है। यह जल्दी से एक मूल्य वापस करने के लिए काम में आता है (यानी इसे किसी अन्य चर को निर्दिष्ट करने के लिए)।

उदाहरण के लिए:

var animal = 'kitty';
var result = (animal === 'kitty') ? 'cute' : 'still nice';

इस मामले में, result को 'प्यारा' मूल्य मिलता है, क्योंकि पशु का मूल्य 'किटी' है। यदि पशु का दूसरा मूल्य होता, तो परिणाम 'अभी भी अच्छा' मूल्य प्राप्त होता।

इसकी तुलना इस कोड से करें कि क्या if/else शर्तों के साथ करना चाहते हैं।

var animal = 'kitty';
var result = '';
if (animal === 'kitty') {
    result = 'cute';
} else {
    result = 'still nice';
}

if या else स्थितियों में कई ऑपरेशन हो सकते हैं। इस स्थिति में ऑपरेटर अंतिम अभिव्यक्ति का परिणाम देता है।

var a = 0;
var str = 'not a';
var b = '';
b = a === 0 ? (a = 1, str += ' test') : (a = 2);

क्योंकि a 0 के बराबर था, यह 1 हो जाता है, और str 'टेस्ट नहीं' बन जाता है। आपरेशन जो शामिल str पिछले था, इसलिए b ऑपरेशन है, जो मूल्य में निहित है का परिणाम प्राप्त करता है str , यानी 'नहीं एक परीक्षण'।

टर्नरी ऑपरेटर हमेशा अन्य स्थितियों की अपेक्षा करते हैं, अन्यथा आपको एक सिंटैक्स त्रुटि मिलेगी। वर्कअराउंड के रूप में आप किसी अन्य शाखा में समान शून्य वापस कर सकते हैं - इससे कोई फर्क नहीं पड़ता अगर आप रिटर्न वैल्यू का उपयोग नहीं कर रहे हैं, लेकिन ऑपरेशन को छोटा (या छोटा करने का प्रयास) कर रहे हैं।

var a = 1;
a === 1 ? alert('Hey, it is 1!') : 0;

जैसा कि आप देखते हैं, if (a === 1) alert('Hey, it is 1!'); वही काम करेगा। यह सिर्फ एक लंबी अवधि होगी, क्योंकि इसके लिए किसी else शर्त की आवश्यकता नहीं है। यदि कोई else शर्त शामिल होती है, तो टर्नरी विधि अधिक क्लीनर होगी।

a === 1 ? alert('Hey, it is 1!') : alert('Weird, what could it be?');
if (a === 1) alert('Hey, it is 1!') else alert('Weird, what could it be?');

अतिरिक्त तर्क को अलग करने के लिए टर्नरीज़ को नेस्टेड किया जा सकता है। उदाहरण के लिए

foo ? bar ? 1 : 2 : 3

// To be clear, this is evaluated left to right 
// and can be more explicitly expressed as:

foo ? (bar ? 1 : 2) : 3

यह निम्नलिखित के समान है if/else

if (foo) {
  if (bar) {
    1
  } else {
    2
  }
} else {
  3
}

Stylistically इसका उपयोग केवल लघु चर नामों के साथ किया जाना चाहिए, क्योंकि बहु-रेखा ternaries पठनीयता को काफी कम कर सकते हैं।

केवल कथन जो टर्नेरीज में उपयोग नहीं किए जा सकते हैं वे नियंत्रण कथन हैं। उदाहरण के लिए, आप टर्नरीज़ के साथ रिटर्न या ब्रेक का उपयोग नहीं कर सकते। निम्नलिखित अभिव्यक्ति अमान्य होगी।

var animal = 'kitty';
for (var i = 0; i < 5; ++i) {
    (animal === 'kitty') ? break:console.log(i);
}

वापसी विवरणों के लिए, निम्नलिखित भी अमान्य होगा:

var animal = 'kitty';
(animal === 'kitty') ? return 'meow' : return 'woof';

उपरोक्त को ठीक से करने के लिए, आप निम्नानुसार टर्नरी लौटाएंगे:

var animal = 'kitty';
return (animal === 'kitty') ? 'meow' : 'woof';

रणनीति

एक स्विच स्टेटमेंट को बदलने के लिए कई मामलों में रणनीति पैटर्न का उपयोग जावास्क्रिप्ट में किया जा सकता है। परिस्थितियों की संख्या गतिशील या बहुत बड़ी होने पर यह विशेष रूप से सहायक होती है। यह प्रत्येक स्थिति के लिए कोड को स्वतंत्र और अलग से परीक्षण करने योग्य बनाता है।

रणनीति ऑब्जेक्ट सरल है एक वस्तु कई कार्यों के साथ, प्रत्येक अलग स्थिति का प्रतिनिधित्व करती है। उदाहरण:

const AnimalSays = {
    dog () {
        return 'woof';
    },

    cat () {
        return 'meow';
    },

    lion () {
        return 'roar';
    },

    // ... other animals

    default () {
        return 'moo';
    }
};

उपरोक्त वस्तु का उपयोग इस प्रकार किया जा सकता है:

function makeAnimalSpeak (animal) {
    // Match the animal by type
    const speak = AnimalSays[animal] || AnimalSays.default;
    console.log(animal + ' says ' + speak());
}

परिणाम:

makeAnimalSpeak('dog') // => 'dog says woof'
makeAnimalSpeak('cat') // => 'cat says meow'
makeAnimalSpeak('lion') // => 'lion says roar'
makeAnimalSpeak('snake') // => 'snake says moo'

अंतिम स्थिति में, हमारा डिफ़ॉल्ट फ़ंक्शन किसी भी लापता जानवरों को संभालता है।

का उपयोग कर || और && छोटा चक्कर लगाना

बुलियन ऑपरेटर || और && "शॉर्ट सर्किट" होगा और दूसरे पैरामीटर का मूल्यांकन नहीं करेगा यदि पहला सच है या गलत है। इसका उपयोग छोटी अवस्थाओं को लिखने के लिए किया जा सकता है जैसे:

var x = 10

x == 10 && alert("x is 10")
x == 10 || alert("x is not 10")


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow