switch
जब तक आप पूर्ण स्ट्रिंग मिलान नहीं कर रहे हैं आप इसे नहीं कर सकते ; यह सबस्टेशन मिलान कर रहा है । (यह काफी सच नहीं है, जैसा कि शॉन टिप्पणियों में बताते हैं। नोट को अंत में देखें।)
यदि आप खुश हैं कि शीर्ष पर आपका रेगेक्स वह सब कुछ छीन रहा है जो आप अपने मैच में तुलना नहीं करना चाहते हैं, तो आपको एक विकल्प मैच की आवश्यकता नहीं है, और यह कर सकते हैं:
switch (base_url_string) {
case "xxx.local":
// Blah
break;
case "xxx.dev.yyy.com":
// Blah
break;
}
... लेकिन फिर, यह केवल तभी काम करता है जब आप पूरी स्ट्रिंग का मिलान कर रहे हों। यदि base_url_string
"yyy.xxx.local" कहते हैं, तो यह विफल हो जाएगा , जबकि आपका वर्तमान कोड "xxx.local" शाखा में मेल खाएगा।
अपडेट : ठीक है, इसलिए तकनीकी रूप से आप मिलान के विकल्प के लिए उपयोग कर सकते हैं switch
, लेकिन मैं ज्यादातर स्थितियों में इसकी सिफारिश नहीं करूंगा। यहां बताया गया है कि कैसे ( लाइव उदाहरण ):
function test(str) {
switch (true) {
case /xyz/.test(str):
display("• Matched 'xyz' test");
break;
case /test/.test(str):
display("• Matched 'test' test");
break;
case /ing/.test(str):
display("• Matched 'ing' test");
break;
default:
display("• Didn't match any test");
break;
}
}
इस तरह से काम करता है क्योंकि जावास्क्रिप्ट switch
स्टेटमेंट काम करता है , विशेष रूप से दो प्रमुख पहलुओं में: पहला, कि मामलों को स्रोत पाठ क्रम में माना जाता है , और दूसरा यह कि चयनकर्ता अभिव्यक्तियाँ (कीवर्ड के बाद बिट्स case
) अभिव्यक्ति हैं जो उस स्थिति के रूप में मूल्यांकन की जाती हैं मूल्यांकन किया गया (कुछ अन्य भाषाओं की तरह नहीं)। इसलिए जब से हमारी परीक्षा की अभिव्यक्ति है true
, पहली case
अभिव्यक्ति जो परिणाम देती है true
वह वही होगी जिसका उपयोग किया जाता है।
switch(true) { case /foo/.test(bar): ....