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




(6)

मैं जावास्क्रिप्ट में सशर्त वक्तव्य सीखने की कोशिश कर रहा हूं, जब मैंने फ़ंक्शन को बिना किसी तर्क के पास किया फिर भी मुझे मिल रहा है 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 ("कोई मान नहीं")


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

    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();


क्योंकि 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')
}


जब x = undefined और y= undefined में कोई तर्क पारित नहीं किया जाता है

x == y // true

यदि आप अपने फ़ंक्शन 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()


ऐसा इसलिए होता है क्योंकि जब आप 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 दोनों 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();





javascript