मैं 3 संस्करण के p.78 में 'वेब डेवलपर्स के लिए व्यावसायिक जावास्क्रिप्ट' निकोलस Zakas द्वारा में पढ़ें:स्विच बयान और प्रकार बलात्कार
स्विच बयान हूबहू का उपयोग कर मूल्यों तुलना बराबर ऑपरेटर, इसलिए कोई प्रकार बलात्कार होता है (उदाहरण के लिए स्ट्रिंग "10" संख्या 10 के बराबर नहीं है)।
मैं सिर्फ इस बात की पुष्टि के लिए कुछ सरल स्विच बयान बना और परिणाम अलग था:
var num = "9";
switch (true) {
case num < 0:
alert("less than 0");
break;
case num >= 0 && num <10:
alert("between 0 and 10");
break;
default:
alert("False");
}
https://jsfiddle.net/pbxyvjyf/
तो, प्रकार बलात्कार किया जाता है: alert("between 0 and 10")
चुना जाता है। क्या नियम बदल गए हैं या क्या मैं कुछ गलत कर रहा हूं?
धन्यवाद :) अब मैं समझता हूं कि मैं क्या गलत कर रहा था। वास्तव में, यहां तक कि उदाहरण में मैंने लेखक को सही भी दिया था: \t'case num> = 0 && num <10: '(मेरा उदाहरण) संख्या एक स्ट्रिंग है, इसलिए 0 में परिवर्तित होती है क्योंकि गलत है और फिर' अलर्ट ("0 और 10 के बीच"); ' प्रकट होता है। धन्यवाद! – viery365
समस्या यह है कि आप अनिवार्य रूप से 'सत्य' और 'झूठी' के साथ '9" 'की तुलना कर रहे हैं। अभिव्यक्ति ('num < 0', 'num > = 0 && num <10') का मूल्यांकन केस तुलना से पहले किया जाता है। –
@ माइकसी बिल्कुल ठीक है आप कैसे कहते हैं! अब मुझे समझ आई। मुझे यह समझने के लिए धन्यवाद कि मैंने क्या किया है। – viery365