यह Gumbo's answer में एक सुधार है। मैं केवल एक अलग उत्तर लिख रहा हूं क्योंकि यह एक टिप्पणी के रूप में फिट नहीं होगा।
संपादित करें: Gumbo एक टिप्पणी है कि मैं डौग इरादा पढ़ने में भूलना हो सकता है में सुझाव दिया।यदि ओपी वास्तव में गिनती> = 4 के लिए "अलविदा" और "lol" दोनों मुद्रित करना चाहता है, तो हमें switch
से break
को निकालना होगा। ताकि "अलविदा" और "lol" इसी क्रम में मुद्रित कर रहे हैं मामलों, अब मूल ठीक हो गई हैं (जो जाहिरा तौर पर ओपी की मंशा है।)
switch (true) {
case (count == 2):
document.write("hi");
break;
case (count > 3):
document.write("bye");
// No break here; just fall through.
case (count >= 4):
document.write("lol");
break;
}
इस मामले में, मैं Gumbo साथ सहमत हैं कि संशोधित if
कथन सही है।
मूल जवाब इस प्रकार है (मानता है कि ओपी वास्तव में चाहता था या तो "lol" या "अलविदा" मुद्रित करने के लिए, लेकिन दोनों नहीं।)
switch
बयान है कि Gumbo wrote लिए काम नहीं करेगा गिनती> = 4, इसी कारण से गम्बो का मूल if
कथन काम नहीं करेगा: क्योंकि मामलों का अनुक्रम में मूल्यांकन किया जाता है, गणना> = 4 का तात्पर्य है कि दूसरा मामला (गिनती> 3) निष्पादित किया जाएगा; इसलिए स्क्रिप्ट गिनती> = 4. इसे ठीक करने के लिए परीक्षण तक पहुँचने कभी नहीं होगा, परीक्षण उच्चतम से न्यूनतम, उलटे क्रम में निष्पादित किया जाना चाहिए:
switch (true) {
case (count >= 4):
document.write("lol");
break;
case (count > 3):
document.write("bye");
break;
case (count == 2):
document.write("hi");
break;
}
को सही if
बयान अभी भी सही या तो नहीं है, क्योंकि गिनती के लिए> = 4 यह आउटपुट पर दोनोंbye
और lol
का उत्पादन करेगा। फिर, if
सीढ़ी के भीतर परीक्षण उच्चतम से न्यूनतम मूल्यों पर जाने के लिए व्यवस्थित किया जाना चाहिए:
if (count >= 4) {
document.write("lol");
} else if (count > 3) {
document.write("bye");
} else if (count == 2) {
document.write("hi");
}
यह आदर्श उदाहरण नहीं है, क्योंकि count
एक पूर्णांक है अगर है, तो count >= 4
और count > 3
का मूल्यांकन एक ही उत्पादन करेगा परिणाम - true
गिनती के लिए> = 4, false
अन्यथा। यह मामला नहीं होगा यदि count
एक फ़्लोटिंग-पॉइंट मान है (लेकिन फिर, "गिनती" नामक एक फ़्लोटिंग-पॉइंट मान अन्य चिंताओं को उठाएगा।)
@Doug - 'if (count> = 4)' अभिव्यक्ति इस संदर्भ में कभी भी सत्य का मूल्यांकन नहीं करेगी। यकीन नहीं है कि यह क्यों है। –
@Doug: आखिरी 'else' इसे हटा दें। – Gumbo
स्विच और यदि दोनों कथन में मूल्यांकन के क्रम में अभी भी समस्याएं हैं। नीचे मेरी टिप्पणी देखें: http://stackoverflow.com/questions/2312817/javascript-switch-with-logical-operators/3282442#3282442 –