javascript - बिना किसी तर्क के सशर्त बयान




(5)

ऐसा इसलिए होता है क्योंकि जब आप tryMe() , तो x और y दोनों undefined होते हैं, जिसका अर्थ है कि वे समान हैं। तो, आपको यह जांचना होगा कि क्या पहले x और y को दिया गया मान है।

function tryMe(x, y) {
  if (typeof(x) != 'undefined' && typeof(y) != 'undefined') {
    if (x == y) {
      console.log("x and y are equal");
    } else if (x > y) {
      console.log("x is greater than y");
    } else if (x < y) {
      console.log("x is less than y")
    } else {
      console.log("no values")
    }
  } else {
    console.log("no values")
  }
}

tryMe();
tryMe(1);
tryMe(1, 2);

मैं जावास्क्रिप्ट में सशर्त वक्तव्य सीखने की कोशिश कर रहा हूं, जब मैंने फ़ंक्शन को बिना किसी तर्क के पास किया फिर भी मुझे मिल रहा है x को y के बराबर है। मुझे समझ नहीं आ रहा है कि मैं कोड को कहां गुम कर रहा हूं।

function tryMe(x, y) {
  if (x == y) {
    console.log("x and y are equal");
  } else if (x > y) {
    console.log("x is greater than y");
  } else if (x < y) {
    console.log("x is less than y")
  } else {
    console.log("no values")
  }
}

tryMe();

यह मेरा कंसोल लॉग है:

x और y बराबर हैं। मैं यह उम्मीद कर रहा हूं कि इसे कंसोल .log ("कोई मान नहीं")


क्योंकि undefined के बराबर है

जब आप परमेस पास नहीं करते हैं, तो यह x और y दोनों अपरिभाषित हो जाता है

ऐसा क्यों होता है - जब आप केवल एक चर घोषित करते हैं तो इसका डिफ़ॉल्ट मान undefined । आपके मामले में ऐसा ही होता है, आपका fn tryMe() घोषित x और y जिसमें डिफ़ॉल्ट मान undefined और जब आप उनकी तुलना करते हैं तो दोनों समान होते हैं।

console.log(undefined == undefined)

var x, y
// Here you declared the variable which happens in your function
if(x === y) {
  console.log('You never defined what value I have so Javascript engine put undefined by default')
}


जब परम आवश्यक हो तो आप त्रुटि फेंक सकते हैं:

    const isRequired = () => {
      throw new Error('param is required'); 
    };
    function tryMe(x = isRequired() ,y = isRequired() ){
             if (x == y){
            console.log("x and y are equal");
        } else if(x > y){
            console.log("x is greater than y");
        } else if (x < y){
            console.log("x is less than y")
        } else {
            console.log("no values")
        }
    }
    tryMe(2,3);
    tryMe(2);
    tryMe();
यह आपके परिमों को अनिवार्य कर देगा।
या आप यह कर सकते हैं:

    function tryMe(x ,y ){
        if(x == "" || x == undefined || y == "" || y == undefined){
          console.log("no values !");
        } else if (x == y){
            console.log("x and y are equal");
        } else if(x > y){
            console.log("x is greater than y");
        } else if (x < y){
            console.log("x is less than y")
        } else {
            console.log("no values")
        }
    }
    tryMe(2,3);
    tryMe(2);
    tryMe();


जैसा कि आप फ़ंक्शन कॉल में कोई तर्क नहीं दे रहे हैं, फ़ंक्शन पैरामीटर x और y दोनों undefined , इस प्रकार वे बराबर हैं:

function tryMe(x, y){
  console.log(x == y); // true
  if (x == y){
    console.log("x and y are equal");
  } else if(x > y){
    console.log("x is greater than y");
  } else if (x < y){
    console.log("x is less than y")
  } else {
    console.log("no values")
  }
}

tryMe();


यदि आप अपने फ़ंक्शन x और y किसी भी तर्क में पास नहीं होते हैं और undefined और undefined === undefined साथ आरंभीकृत किया जाता है, तो इसीलिए आप x and y are equal

ऐसा करने का एक बेहतर तरीका होगा

function tryMe(x, y) {
  if(!x || !y) return console.log('No values')
  if (x == y) {
    console.log("x and y are equal");
  } else if (x > y) {
    console.log("x is greater than y");
  } else if (x < y) {
    console.log("x is less than y")
  }
}

tryMe()





javascript