ప్రతి ఉపయోగకరమైన ప్రోగ్రామ్ ఏదో ఒక సమయంలో నిర్ణయం తీసుకోవాల్సిన దశకు చేరుకుంటుంది. ఈ బటన్ ఫారమ్ను సబ్మిట్ చేయాలా లేదా ఎర్రర్ను చూపాలా? ఈ యూజర్కు అడ్మిన్ డ్యాష్బోర్డ్ కనిపించాలా లేదా గెస్ట్ వ్యూనా? JavaScript ఈ ప్రశ్నలకు కండిషనల్ స్టేట్మెంట్లతో (conditional statements) సమాధానం ఇస్తుంది. ఇవి మీ కోడ్కు నియంత్రణ వాల్వ్ల వంటివి: ఒక మార్గాన్ని తెరుస్తాయి, మరొక దానిని మూసివేస్తాయి, ఇవన్నీ ఒక ఎక్స్ప్రెషన్ true లేదా false అని తేలడంపై ఆధారపడి ఉంటాయి. ఇవి లేకపోతే, మీ స్క్రిప్ట్ వినియోగదారుని స్పందించకుండా పై నుండి కింద వరకు సాగిపోతుంది.
అత్యంత సరళమైన విభాగం: if
if స్టేట్మెంట్ అనేది మీరు మొదట ప్రవేశించే ద్వారం వంటిది. మీరు బ్రాకెట్ల (parentheses) లోపల ఒక కండిషన్ను ఉంచుతారు. ఆ కండిషన్ true అని తేలితే, దాని కింద ఉన్న కోడ్ బ్లాక్ అమలు చేయబడుతుంది. ఒకవేళ అది false అని తేలితే, JavaScript ఆ బ్లాక్ను పూర్తిగా వదిలేసి ఫైల్లో ముందుకు సాగుతుంది.
సరళమైన, ఒకేసారి చేసే తనిఖీలకు ఇది సరిగ్గా సరిపోతుంది. సర్వర్కు ఏదైనా పంపే ముందు ఫారమ్ ఫీల్డ్ను ధృవీకరించడం (validating) గురించి ఊహించుకోండి:
const email = document.getElementById("email").value;
if (email === "") {
alert("Please enter your email.");
}
email లేకపోతే, సబ్మిషన్ జరగదు. ఈ లాజిక్ చాలా స్పష్టంగా ఉంటుంది. మీరు కేవలం ఒకే ఒక ప్రత్యేక సందర్భాన్ని మాత్రమే తనిఖీ చేయాలనుకున్నప్పుడు మరియు వేరే ప్రత్యామ్నాయ చర్య అవసరం లేనప్పుడు ifని ఉపయోగించండి.
ఏదో ఒకటి (Either–Or) ఎంచుకోవడం: if...else
చాలా నిజ జీవిత నిర్ణయాలకు రెండు వైపులా ఉంటాయి. if...else జంట సరిగ్గా అదే చేస్తుంది. కండిషన్ true అయినప్పుడు ఒక బ్లాక్, false అయినప్పుడు మరొక బ్లాక్ రన్ అవుతుంది. ఈ రెండు మార్గాలు పరస్పర విరుద్ధమైనవి (mutually exclusive).
పేజీ లోడ్ అయినప్పుడు డార్క్-మోడ్ తనిఖీని ఊహించుకోండి:
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
if (prefersDark) {
document.body.classList.add("dark");
} else {
document.body.classList.add("light");
}
బ్రౌజర్ ఎప్పుడూ రెండు క్లాస్లను ఒకేసారి జోడించదు. ఇది ఒక మార్గాన్ని ఎంచుకుని, దానిని అమలు చేసి, ముందుకు వెళ్తుంది. మీ లాజిక్ రెండు సాధ్యమయ్యే ఫలితాల్లో ఒకదానిలోకి స్పష్టంగా విడిపోతున్నప్పుడు, ఈ నిర్మాణాన్ని ఉపయోగించండి.
బహుళ మార్గాలు: if...else if...else
ప్రతి సమస్య కూడా బైనరీ (binary) కాదు. కొన్నిసార్లు మీకు అనేక అవకాశాల క్రమం (ladder of possibilities) అవసరమవుతుంది. if...else if...else చైన్ మీకు వరుసగా అనేక కండిషన్లను పరీక్షించడానికి అనుమతిస్తుంది. JavaScript వాటిని పై నుండి కింద వరకు అంచనా వేస్తుంది మరియు ఏ కండిషన్ అయితే true అవుతుందో ఆ మొదటి బ్లాక్ను మాత్రమే రన్ చేస్తుంది. ఆ మ్యాచ్ తర్వాత, మిగిలిన క్రమాన్ని పట్టించుకోదు.
ఒక సంఖ్యాత్మక స్కోరును లెటర్ గ్రేడ్గా మార్చడం దీనికి ఒక క్లాసిక్ ఉదాహరణ:
const score = 87;
let grade;
if (score >= 90) {
grade = "A";
} else if (score >= 80) {
grade = "B";
} else if (score >= 70) {
grade = "C";
} else {
grade = "F";
}
ఇక్కడ క్రమం (order) చాలా ముఖ్యం. మీరు score >= 90 కంటే ముందు score >= 70ని తనిఖీ చేస్తే, దాదాపు అన్ని పాస్ అయిన గ్రేడ్లు C కేటగిరీలోకి వచ్చేస్తాయి, ఎందుకంటే మొదటి true మ్యాచ్ మాత్రమే గెలుస్తుంది. మీ కండిషన్లను అత్యంత నిర్దిష్టమైన దాని నుండి తక్కువ నిర్దిష్టమైన దాని వరకు అమర్చండి, మరియు మిగిలిన వాటిని పట్టుకోవడానికి ఎల్లప్పుడూ చివరన ఒక elseను ఉంచండి.
స్థిర విలువలను సరిపోల్చడం: switch
మీరు ఒక వేరియబుల్ను తెలిసిన స్థిరమైన విలువల (constants) జాబితాతో పోల్చాలనుకున్నప్పుడు, పొడవైన if...else చైన్ గందరగోళంగా మారుతుంది. switch స్టేట్మెంట్ ఈ పరిస్థితిని సులభతరం చేస్తుంది. ఇది ఒక ఎక్స్ప్రెషన్ను ఒకసారి అంచనా వేస్తుంది, ఆపై దానిని case లేబుల్స్తో స్ట్రిక్ట్ ఈక్వాలిటీ (===) ఉపయోగించి పోల్చుతుంది. ఆప్షన్లు విడివిడిగా మరియు పేర్లతో ఉన్నప్పుడు, ఇది కోడ్ను సులభంగా అర్థం చేసుకోవడానికి సహాయపడుతుంది.
ప్రస్తుత రోజు ఆధారంగా స్టోర్ పని వేళలను సెట్ చేయడం గురించి ఆలోచించండి:
const day = new Date().getDay();
switch (day) {
case 0:
console.log("Sunday hours: 10am - 4pm");
break;
case 6:
console.log("Saturday hours: 9am - 6pm");
break;
default:
console.log("Weekday hours: 8am - 8pm");
}
break విషయంలో జాగ్రత్తగా ఉండండి. మీరు దానిని వదిలేస్తే, ఎగ్జిక్యూషన్ తదుపరి caseకి వెళ్లి రన్ అవుతూనే ఉంటుంది. ఈ ప్రవర్తన అప్పుడప్పుడు ఉపయోగకరంగా ఉన్నప్పటికీ, చాలా సందర్భాలలో ఇది తెలియకుండానే బగ్స్కు (silent bugs) దారితీస్తుంది. సరిగ్గా ఉపయోగించినప్పుడు, switch మీ ఉద్దేశాన్ని స్పష్టంగా చూపుతుంది మరియు సంబంధిత విభాగాలను ఒక క్రమ పద్ధతిలో ఉంచుతుంది.
సంక్షిప్త నిర్ణయాలు: టెర్నరీ ఆపరేటర్ (Ternary Operator)
టెర్నరీ ఆపరేటర్—? : గా వ్రాయబడుతుంది—ఇది ఒక ఎక్స్ప్రెషన్, స్టేట్మెంట్ కాదు. ఆ తేడా చాలా ముఖ్యం.
