जावास्क्रिप्ट सशर्त ऑपरेटर। जावास्क्रिप्ट में सशर्त कथन - IF-ELSE निर्माण - जावास्क्रिप्ट में स्थितियां - मूल बातें। जावास्क्रिप्ट में अन्य शर्त
नियंत्रण निर्देश निर्देश हैं जो प्रोग्राम कोड के निष्पादन को नियंत्रित करते हैं। आमतौर पर, एक नियंत्रण निर्देश में निष्पादन योग्य कोड को उस निर्देश का निकाय कहा जाता है।
नियंत्रण निर्देशों को नेस्टेड या अन्य नियंत्रण निर्देशों के अंदर उपयोग किया जा सकता है।
सशर्त बयान
डिफ़ॉल्ट रूप से, जावास्क्रिप्ट दुभाषिया एक के बाद एक निर्देश को निष्पादित करता है जिस क्रम में वे स्रोत कोड में दिखाई देते हैं। ऐसे मामलों में जहां कुछ निर्देशों का निष्पादन या गैर-निष्पादन एक निश्चित स्थिति की पूर्ति या गैर-पूर्ति पर निर्भर होना चाहिए, सशर्त बयानों का उपयोग किया जाता है।
अगर बयान
यदि कथन के दो रूप हैं। पहले फॉर्म का सिंटैक्स है:
कोष्ठक में अभिव्यक्ति को कहा जाता है निष्पादन की शर्त यदि संक्षेप में बयान या सशर्त। पहले अभिव्यक्ति के मूल्य का मूल्यांकन किया जाता है। परिणामस्वरूप मूल्य, यदि आवश्यक हो, तो अंतर्निहित रूप से एक बूलियन प्रकार में परिवर्तित किया जाता है। यदि अभिव्यक्ति सच का मूल्यांकन करती है, तो कथन निष्पादित किया जाता है। यदि अभिव्यक्ति गलत है, तो कथन निष्पादित नहीं किया जाता है:
अगर (सच) अलर्ट ("पूर्ण!"); अगर (झूठा) अलर्ट ("निष्पादित नहीं किया जाएगा!");
अगर सिंटैक्स आपको केवल एक कथन निष्पादित करने की अनुमति देता है, लेकिन यदि आपको एक से अधिक कथन निष्पादित करने की आवश्यकता है, तो आपको एक यौगिक का उपयोग करने की आवश्यकता है:
अगर (सच) (var str \u003d "हेलो!"; अलर्ट (str);)
दूसरे फॉर्म का सिंटैक्स है:
यदि (अभिव्यक्ति) कथन; और बयान;
दूसरा कीवर्ड आपको स्टेटमेंट को गलत होने पर निष्पादित करने के लिए जोड़ने की अनुमति देता है:
यदि (गलत) चेतावनी ("निष्पादित नहीं किया जाएगा"); अन्य चेतावनी ("निष्पादन");
जैसा कि पहले ही उल्लेख किया गया है, नियंत्रण निर्देशों को नेस्टेड किया जा सकता है, जो आपको निम्नलिखित निर्माण करने की अनुमति देता है:
वर संख्या \u003d 2; if (num \u003d\u003d 1) (अलर्ट ("num value:" + num);) अगर (num \u003d\u003d 2) (अलर्ट ("num value:" + num);) और (अलर्ट ("मुझे ऐसी कोई संख्या नहीं पता है) (");)
इस कोड के बारे में कुछ खास नहीं है। यह केवल बयानों का एक क्रम है, जहां प्रत्येक यदि कथन पूर्व के कथन का हिस्सा है तो कथन। पहली नज़र में, संकेतन का यह रूप पूरी तरह से स्पष्ट नहीं लग सकता है, इसलिए यदि बयानों का घोंसला दिखाते हुए एक वाक्यात्मक रूप से समकक्ष रूप पर विचार करें:
वर संख्या \u003d 2; अगर (num \u003d\u003d 1) (अलर्ट ("num value:" + num);) और (if (num \u003d\u003d 2) (अलर्ट ("num value:" + num);) और (अलर्ट ("मुझे यह पता नहीं है) संख्या (");))
इस उदाहरण में, हम सबसे पहले चार कुंजीशब्दों का प्रयोग करते हैं, और तुरंत उन्हें संख्यात्मक मान प्रदान करते हैं। अगला, वेतन वृद्धि और गिरावट के ऑपरेटरों का उपयोग करते हुए, हम संख्याओं के मूल्यों को बदलते हैं। फ़ंक्शन का उपयोग करके जानकारी प्रदर्शित की जाती है गूंज (लेख "" देखें)। ऑब्जेक्ट का नाम एक बार फिर से नहीं लिखने के लिए, मैंने निर्माण का उपयोग किया साथ में ().
लॉजिकल ऑपरेटर्स
स्थिति की जांच करते समय तार्किक संचालकों का उपयोग किया जाता है, इसलिए दोहराए जाने के लिए नहीं, मैं एक संक्षिप्त विवरण दूंगा: बाएं ऑपरेंड एलओओ है, और सही ऑपरेंड पी.ओ.
- && - तार्किक "और"
- || - "या"
- ! - "नहीं"
- \u003e - एल.ओ. अधिक पी.ओ.
- \u003e \u003d - एल.ओ. P.O से अधिक या बराबर है।
- < - Л.О. меньше П.О.
- <= - Л.О. меньше или равен П.О.
- \u003d\u003d - एल.ओ. P.O के बराबर।
- ! \u003d - एल.ओ. PO के बराबर नहीं है।
- | \u003d - एल.ओ. खुद के बराबर या पी.ओ.
- & \u003d - एल.ओ. खुद के बराबर और P.O.
- ^ \u003d - विशिष्ट या
अब निम्नलिखित स्क्रिप्ट पर विचार करें:
//***************************************** // तार्किक संचालन // logik_if_else.js //***************************************** var a \u003d 10, b \u003d 100, WshShell, title, msg1, msg2, msg3, msg4, vbInformation \u003d 64; // WScript.Shell क्लास का एक उदाहरण बनाएं WshShell \u003d WScript.CreateObject ("WScript.Shell"); शीर्षक \u003d "अगर ईएलएसई जेएस सशर्त वक्तव्य के साथ काम करना"; (WshShell) के साथ (यदि (a\u003e \u003d 5 && a)<= 100 ) //истина msg1 = "TRUE" ; else msg1 = "FALSE" ; Popup (msg1, 5 , title, vbInformation) ; if (a>\u003d 5 || b \u003d\u003d 100) // सच्चा msg2 \u003d "TRUE"; और संदेश 2 \u003d "FALSE"; पॉपअप (संदेश 2, 5, शीर्षक, vbInformation); // सशर्त बयान js अगर और if (a) // false msg3 \u003d "TRUE"; और संदेश 3 \u003d "FALSE"; पॉपअप (msg3, 5, शीर्षक, vbInformation); if (a (\u003d 100) // false msg4 \u003d "TRUE"; और msg4 \u003d "FALSE"; पॉपअप (msg4, 5, शीर्षक, vbInformation); ) |
पिछली स्क्रिप्ट की तरह, यहां मैंने निर्माण का उपयोग किया साथ में प्रोग्राम कोड को छोटा करने के लिए। हालांकि, जानकारी प्रदर्शित करने के लिए, हमने फ़ंक्शन का उपयोग किया पॉप अप (लेख "" देखें)। परिणामस्वरूप, कुछ सेकंड के बाद संवाद बॉक्स अपने आप बंद हो जाएंगे। कृपया ध्यान दें कि इस उदाहरण में हमने घुंघराले ब्रेसिज़ का उपयोग नहीं किया है। js में यदि सशर्त विवरण, वे केवल तभी प्रासंगिक होते हैं जब आपको कोड की एक से अधिक पंक्ति निष्पादित करने की आवश्यकता होती है, लेकिन कई।
अंत में, आइए एक द्विघात समीकरण को हल करने जैसे व्यावहारिक उदाहरण को देखें:
// द्विघात समीकरण को हल करना // uravnenije_if_else.js // *********************************************************** var a, b, c, d, x, X1, x2; // चरों की घोषणा करें ए \u003d - 2; बी \u003d 6; सी \u003d 20; // विवेकशील की खोज करना d \u003d गणित। pow (b, 2) - 4 * a * c; if (d \u003d\u003d 0) (x \u003d b / (2 * a); msg \u003d "समीकरण का एक समाधान है, x बिल्कुल" + x) और (यदि (d\u003e 0) (X1 \u003d (- b + गणित .sqrt (d)) / / (2 * a); x2 \u003d (- b- गणित .sqrt (d) / / (2 * a) ? संदेश \u003d "समीकरण के दो समाधान हैं \\ n X1 बिल्कुल" + X1 + " \\ n x2 बिल्कुल " + x2; // सशर्त बयान अगर अन्य जे.एस. ) और संदेश \u003d "कोई समाधान नहीं"; ) WScript.Echo (msg); |
var a \u003d 10; var b \u003d (a\u003e 1)? 100: 200; सतर्क (बी);
अगर दशा ए\u003e १ सच है, तो चर ख मान प्रदान करें 100 , अन्यथा चर b को मान असाइन किया गया है 200 .
जेएस कार्य 3_4। कोड पूरा होने: 3 स्थानीय चर को कीवर्ड का उपयोग करके घोषित किया जाता है। निम्नलिखित टेनेरी ऑपरेटर के चर को अधिकतम करने के लिए असाइन करना आवश्यक है: यदि a, b से अधिक है, तो हम a को वापस करते हैं, अन्यथा हम b को वापस करते हैं।
कोड का स्निपेट:
अगर (a * b< 6) { result = "Мало"; } else { result = "Много"; }
आत्म-नियंत्रण के लिए प्रश्न:
- टर्नेरी ऑपरेटर के लिए वाक्य रचना क्या है?
- टर्नेरी ऑपरेटर के पास कितने तर्क हैं?
JavaScript में स्विच ऑपरेटर - स्विच
जावास्क्रिप्ट स्विच स्टेटमेंट का उपयोग कई मानों के लिए एक चर का परीक्षण करने के लिए किया जाता है:
वाक्य - विन्यास:
स्विच (चर या अभिव्यक्ति) (केस विकल्प 1: // .. स्टेटमेंट ब्लॉक .. ब्रेक केस ऑप्शन 2: // .. स्टेटमेंट ब्लॉक .. ब्रेक डिफ़ॉल्ट: // .. स्टेटमेंट ब्लॉक ..)
एक चर या अभिव्यक्ति के मूल्य की जाँच की जाती है: प्रत्येक में मामला मूल्यों में से एक की जाँच की जाती है, एक उचित मूल्य के मामले में, दिए गए विवरणों के अनुसार एक या दूसरे ब्लॉक मामला.
सेवा शब्द डिफ़ॉल्ट के साथ शुरू होने वाले ब्लॉक को छोड़ा जा सकता है। यदि सभी में सूचीबद्ध मूल्यों में से कोई भी नहीं है तो ब्लॉक स्टेटमेंट निष्पादित किया जाएगा मामला फिट नहीं है।
जरूरी: विराम के प्रत्येक मान के बाद विराम कथन आवश्यक है मामला); यदि आप इसका उपयोग नहीं करते हैं, तो नीचे के सभी ऑपरेटर प्रदर्शित किए जाएंगे
ऑपरेटर के साथ तुलना करें अगर:
var a \u003d 2; स्विच (ए) (केस 0: // अगर (एक \u003d\u003d\u003d 0) केस 1: // अगर (एक \u003d\u003d\u003d 0) अलर्ट ("शून्य या एक"); // फिर आउटपुट ... ब्रेक; केस; 2: // अगर (a \u003d\u003d\u003d 2) अलर्ट ("दो"); // फिर डिस्प्ले ... ब्रेक; डिफ़ॉल्ट: // और अलर्ट ("कई"); // अन्यथा डिस्प्ले ...
मैं कई विकल्पों का समूह कैसे बना सकता हूं?
एक ही ऑपरेटरों को निष्पादित करने के लिए, कई समूह बनाना संभव है मामला... ऊपर के उदाहरण में:
केस 0: केस 1: अलर्ट ("शून्य या एक"); टूटना; ...
एक \u003d 0 और एक \u003d 1 के साथ, एक ही कथन निष्पादित किया जाता है: चेतावनी ("शून्य या एक");
उदाहरण 4: उपयोगकर्ता को एक रंग दर्ज करने के लिए प्रेरित करें। दर्ज किए गए रंग का अंग्रेजी अनुवाद प्रदर्शित करें। रंग के लिए "नीला" तथा "नीला" उसी मूल्य को वापस करें।
✍ समाधान:
- Html कंकाल और टैग के साथ एक वेब पेज बनाएं लिपि.
- एक चर शुरू करो रंग
- निर्माण का उपयोग करके एक चर के मूल्य की जांच करें switсh, प्रत्येक मूल्य के लिए आउटपुट - संबंधित अनुवाद:
- फूलों के लिए "नीला" तथा "नीला" समूहीकरण करें:
- उन रंगों के लिए आउटपुट व्यवस्थित करें जो कार्यक्रम द्वारा प्रदान नहीं किए गए हैं:
- किसी ब्राउज़र में स्क्रिप्ट का परीक्षण करें।
var रंग \u003d प्रॉम्प्ट ("क्या रंग?"); |
var रंग \u003d प्रॉम्प्ट ("क्या रंग?");
स्विच (रंग) (केस "रेड": अलर्ट ("रेड"); ब्रेक; केस "ग्रीन": अलर्ट ("ग्रीन)); ब्रेक; // ...;
यदि चर रंगमान "लाल" है, फिर मोडल विंडो में अनुवाद प्रदर्शित करें - "लाल" और निर्माण से बाहर निकलें (ब्रेक;)। यदि चर रंग मान "हरा" है, फिर मोडल विंडो में अनुवाद प्रदर्शित करें - "हरा" और निर्माण से बाहर निकलें (ब्रेक;)।
// ... केस "ब्लू": केस "ब्लू": अलर्ट ("ब्लू"); टूटना; // ...
यदि चर रंगनीला या परिवर्तनशील है रंग"ब्लू" का मान है, फिर मोडल विंडो में अनुवाद प्रदर्शित करें - "ब्लू" और निर्माण से बाहर निकलें (ब्रेक;)।
// ... डिफ़ॉल्ट: अलर्ट ( "हमें इस रंग के बारे में कोई जानकारी नहीं है")) // एंड स्विच |
// ... डिफ़ॉल्ट: अलर्ट ("इस रंग पर हमारी कोई जानकारी नहीं है")) // अंत स्विच
जेएस कार्य 3_6। निम्नलिखित कोड स्निपेट में त्रुटियां खोजें और ठीक करें:
14 15 16 17 | var संख्या \u003d प्रॉम्प्ट ( "नंबर 1 या 2 दर्ज करें:"); स्विच (संख्या) (केस "1" (डॉक्यूमेंट.राइट ("वन"); ब्रेक; केस "2" (डॉक्यूमेंट.राइट) ("टू");); ब्रेक; डिफॉल्ट; (डॉक्यूमेंट.राइट) ( "आपने 1 और 2 के अलावा एक मान दर्ज किया है") ; } ; } |
var संख्या \u003d प्रॉम्प्ट ("नंबर 1 या 2 दर्ज करें:"); स्विच (संख्या) (केस "1" (डॉक्यूमेंट.राइट ("एक"); ब्रेक; केस "2" (डॉक्यूमेंट.राइट ("दो");); ब्रेक; डिफॉल्ट; डॉक्यूमेंट.राइट) ("आपने दर्ज किया") 1 और 2 ") के अलावा एक मूल्य;);)
जेएस कार्य 3_7। निम्न कोड निष्पादित होने पर स्क्रीन पर क्या दिखाया जाएगा?:
1 2 3 4 5 6 7 8 9 10 11 12 13 | var मान \u003d "2"; स्विच (मान) (केस "1": केस "2": केस "3": डॉक्यूमेंट.राइट ("हेलो); ब्रेक; केस" 4 ": केस" 5 ": डॉक्यूमेंट.राइट (" वर्ल्ड "); डिफ़ॉल्ट: document.write ("त्रुटि");) |
var मान \u003d "2"; स्विच (मान) (केस "1": केस "2": केस "3": डॉक्यूमेंट.राइट ("हेलो); ब्रेक; केस" 4 ": केस" 5 ": डॉक्यूमेंट.राइट (" वर्ल्ड "); डिफ़ॉल्ट: document.write ("त्रुटि");)
जेएस कार्य 3_8। उपयोगकर्ता से नंबर के लिए पूछना - शाखा पर कौवे की संख्या। दर्ज संख्या (10 से अधिक नहीं) के आधार पर, संदेश प्रदर्शित करें: - एक शाखा पर बैठे 1 कौआ - एक शाखा पर बैठता है 4 कौवे - एक शाखा पर बैठता है 10 कौवे
- दर्ज संख्या के आधार पर, शब्द का अंत बदल जाता है "कौवा".
- जाँच करने के लिए, स्विच जावास्क्रिप्ट ऑपरेटर का उपयोग करें।
- परिणाम फ़ोल्डर में इस पृष्ठ को सहेजें (यह आगे के काम के लिए उपयोगी होगा)।
आत्म-नियंत्रण के लिए प्रश्न:
- सशर्त ऑपरेटर के रूप में निर्माण का उपयोग करना कब उचित है स्विच?
- कथन के लिए डिफ़ॉल्ट ब्लॉक क्या है? स्विच?
- क्या निर्माण में ब्रेक स्टेटमेंट का उपयोग करना अनिवार्य है स्विच?
- एक ऑपरेटर में कई वैल्यू वेरिएंट के लिए ग्रुपिंग कैसे की जाती है स्विच?
जावास्क्रिप्ट भाषा के चक्रीय संचालक - के लिए
वाक्य - विन्यास:
के लिए (काउंटर का प्रारंभिक मूल्य; स्थिति; काउंटर का वेतन वृद्धि) (// बयानों का विवरण ..)
जरूरी: जावास्क्रिप्ट के लिए एक लूप का उपयोग तब किया जाता है जब यह पहले से जाना जाता है कि चक्रीय कार्यों को कितनी बार दोहराया जाना चाहिए (लूप के कितने पुनरावृत्तियों हैं)
- एक असाइनमेंट एक्सप्रेशन को इटर्शन काउंटर के शुरुआती मान के रूप में उपयोग किया जाता है: उदाहरण के लिए, i \u003d 0 - लूप काउंटर शून्य से शुरू होता है:
- एक काउंटर वृद्धि के रूप में, जिस कदम के साथ काउंटर में वृद्धि होनी चाहिए, वह संकेतित है: उदाहरण के लिए, इंगित करता है कि लूप का प्रत्येक पुनरावृत्ति इसके बढ़ने के साथ होगा 1 :
- लूप स्थिति काउंटर का अंतिम मान है: उदाहरण के लिए, i10 लूप रोकता है:
(var i \u003d 0; स्थिति; काउंटर वेतन वृद्धि) (// बयानों का विवरण ..)
के लिए (var i \u003d 0; स्थिति; मैं ++) (// कथन का विवरण ..)
के लिए (var i \u003d 0; मैं;<10; i++) { //..блок операторов.. }
आइए जावास्क्रिप्ट में पाश के लिए उपयोग करने का एक उदाहरण देखें:
उदाहरण 5: संख्याओं का एक क्रम प्रिंट करें 0 1 2 3 ... 9 , एक नई लाइन पर प्रत्येक अंक। 0 1 2 ... 8 9
✍ समाधान:
- संख्याओं के अनुक्रम को प्रदर्शित करने के लिए, हम लूप के काउंटर का उपयोग करेंगे, जिससे इसका मान परिवर्तित होना चाहिए 0 इससे पहले 9 अनुक्रम के अनुसार।
- इसलिए, के लिए चक्र काउंटर का प्रारंभिक मूल्य करने के लिए मान सेट करें 0 ; जैसा चक्र की स्थिति अंतिम मूल्य निर्धारित करें - ii \u003d 9; काउंटर स्टेप होना चाहिए 1 (I ++) चूंकि अनुक्रम के सदस्यों के बीच का अंतर एक है:
- किसी ब्राउज़र में स्क्रिप्ट का परीक्षण करें।
के लिए (var i \u003d 0; मैं;<10; i++)
{
document.write(i+"
");
}
उदाहरण में, लूप काउंटर के मूल्यों को स्क्रीन पर प्रदर्शित किया जाता है, क्योंकि क्रमशः काउंटर i ++ का वेतन वृद्धि स्क्रीन पर दिखाई देगा। 0 1 2 3 ... 9
एक नई लाइन पर प्रत्येक अंक के साथ (टैग
).
जेएस कार्य 3_9। 1 इससे पहले 15 .
- संख्याओं के अनुक्रम के रूप में एक लूप काउंटर का उपयोग करें के लिये.
- योजक चर के लिए, चर पहचानकर्ता का उपयोग करें योग.
कोड का स्निपेट:
For (var i \u003d ...; ...? ...) (sum \u003d sum + ...;) ...
लूप बाहर निकलने के बयान टूटना तथा जारी रखें जावा स्क्रिप्ट में। ऑपरेटर बाहर जाएं
ब्रेक स्टेटमेंट पूरे लूप बॉडी के निष्पादन को बाधित करता है, अर्थात। javaScript में लूप से बाहर निकलता है।
हालांकि जारी बयान वर्तमान लूप पुनरावृत्ति के निष्पादन को बाधित करता है, लेकिन, एक ही समय में, अगले पुनरावृत्ति से लूप निष्पादन जारी रखता है।
आइए ब्रेक के संचालन पर विचार करें और एक उदाहरण का उपयोग करके बयान जारी रखें:
उदाहरण: कोड स्निपेट के एल्गोरिथ्म को पार्स करें। क्या प्रदर्शित किया जाएगा?
कोड का स्निपेट:
1 2 3 4 5 6 | के लिए (var i \u003d 0; मैं;<
10
;
i++
)
{
if
(i==
4
)
continue
;
document.write
(i+
" "), अगर (i \u003d\u003d 8) ब्रेक;) |
के लिए (var i \u003d 0; मैं;<10;i++)
{
if (i==4) continue;
document.write(i+"
"), अगर (i \u003d\u003d 8) ब्रेक;)
✍ समाधान:
- उदाहरण की तीसरी पंक्ति में एक शर्त है जिसके कारण अंक है 4 प्रदर्शित नहीं किया जाएगा: ऑपरेटर जारी रखेंवर्तमान को पूरा किए बिना लूप के अगले पुनरावृत्ति के लिए आगे बढ़ेगा।
- पंक्ति संख्या 5 में, लूप बाहर निकलता है, लेकिन संख्या 8 (4 लाइन पर) स्थिति से पहले आउटपुट स्टेटमेंट आने के बाद से प्रदर्शित किया जाएगा। मिलने से रहा टूटना, दुभाषिया लूप से बाहर निकल जाएगा।
- इसलिए स्क्रीन दिखाएगा: 0 1 2 3 5 6 7 8 - नई लाइन पर प्रत्येक अंक।
जेएस कार्य 3_10। से सभी पूर्णांकों का योग आउटपुट करें 1 इससे पहले 15 , कुल संख्या को छोड़कर 5 तथा 7 .
एग्जिट स्टेटमेंट
Javasctipt भाषा प्रोग्राम कोड से एक निकास ऑपरेटर प्रदान करती है - निकास ऑपरेटर।
सबसे अधिक बार, ऑपरेटर का उपयोग उपयोगकर्ता इनपुट त्रुटि को खत्म करने के लिए किया जाता है।
आइए एक उदाहरण पर विचार करें:
उदाहरण 6: उपयोगकर्ता को एक नंबर दर्ज करने के लिए प्रेरित करें। यदि कोई संख्या दर्ज नहीं है, तो संदेश प्रदर्शित करें "आपको एक नंबर चाहिए!" और कार्यक्रम बंद करो।
✍ समाधान:
- एक चर शुरू करो संख्या उपयोगकर्ता द्वारा मोडल में दर्ज किया गया मान:
- स्ट्रिंग को पूर्णांक में बदलने के लिए parseInt फ़ंक्शन का उपयोग करना, जांचें कि क्या दर्ज किया गया मान एक संख्या है:
- चर का मान जांचें संख्या isNaN फ़ंक्शन का उपयोग करना:
- द्वारा "झूठ" का शासन चर का मान जाँचने की व्यवस्था करें एक्स... यदि मान संख्यात्मक नहीं है, तो संबंधित नोट को प्रिंट करें और प्रोग्राम से बाहर निकलें:
- कार्यक्रम को जारी रखने के लिए (यदि दर्ज मूल्य एक संख्या थी), इनपुट प्रॉम्प्ट के साथ निम्न विंडो प्रदर्शित करें:
- किसी ब्राउज़र में स्क्रिप्ट का परीक्षण करें।
var संख्या \u003d शीघ्र ("एक नंबर दर्ज करें");
संख्या \u003d parseInt (संख्या); // NaN लौटाएगा - संख्या नहीं
यदि कोई संख्या दर्ज नहीं की गई है, तो फ़ंक्शन NaN (अंग्रेजी से) मान लौटाएगा। एक संख्या नहीं है - संख्या नहीं)।
x \u003dNNN (संख्या); // सही वापस आ जाएगा यदि मान संख्यात्मक नहीं है
IsNaN फ़ंक्शन मान लौटाता है सच मामले में चर एक संख्या नहीं है
अगर (एक्स) (अलर्ट ("एक नंबर की आवश्यकता है!"), बाहर निकलें; // कार्यक्रम से बाहर निकलें)
चेतावनी ("दूसरा नंबर दर्ज करें"); // यदि आप एक गैर-संख्या दर्ज करते हैं, तो कथन निष्पादित नहीं किया जाएगा
आत्म-नियंत्रण के लिए प्रश्न:
- तीन लूप मापदंडों की सूची बनाएं के लिये और उनके उद्देश्य की व्याख्या करें।
- क्या ऑपरेटरों को पाश से बाहर निकलने और इसे बाधित करने के लिए हैं? उनके उपयोग का उदाहरण दें।
- ऑपरेटर किस लिए है बाहर जाएं?
क्या एक में कई काउंटरों का होना संभव है?
लूप के लिए एक दिलचस्प काम का उपयोग करके संभव है एक साथ एक चक्र में दो काउंटर.
आइए एक उदाहरण पर विचार करें:
उदाहरण 7: स्क्रिप्ट का उपयोग करते हुए, निम्न चर-मान युग्मों को तीन पंक्तियों में प्रिंट करें: i \u003d 0 j \u003d 2 i \u003d 1 j \u003d 3 i \u003d 2 j \u003d 4
✍ समाधान:
- लूप के लिए, दो काउंटरों को व्यवस्थित करें: अनुक्रम को आउटपुट करने के लिए काउंटर I 0 1 2 , काउंटर जे अनुक्रम के उत्पादन के लिए 2 3 4 :
- प्रत्येक पंक्ति पर आउटपुट के लिए टैग का उपयोग करें
:
1 2 3 | के लिए (i \u003d 0, j \u003d 2; मैं;< 10 , j< 5 ; i++, j++ ) { } |
के लिए (i \u003d 0, j \u003d 2; मैं;<10, j<5; i++, j++) { }
लूप के तीन मापदंडों में से प्रत्येक में अब दो मान हैं, जो सूचीबद्ध हैं अल्पविराम से अलग (उदाहरण के लिए, दो मानों वाला पहला पैरामीटर: i \u003d 0, j \u003d 2)। पैरामीटर स्वयं सूचीबद्ध हैं अर्धविराम अलग हो गया(;).
1 2 3 4 | के लिए (i \u003d 0, j \u003d 2; मैं;<
10
,
j<
5
;
i++,
j++
)
{
document.write
(" i \u003d ", i," j \u003d ", j);) |
के लिए (i \u003d 0, j \u003d 2; मैं;<10, j<5; i++, j++)
{
document.write("
i \u003d ", i," j \u003d ", j);)
ऑन-द-फ्लाई पेज पीढ़ी: यह कैसे है?
अगला कार्य करने से पहले, एक उदाहरण पर विचार करें html पेज को गतिशील रूप से बनाना जावास्क्रिप्ट का उपयोग करना।
उदाहरण 8:
- उपयोगकर्ता द्वारा दर्ज किए गए डेटा के आधार पर वेब पेज पर बुलेटेड और क्रमांकित सूचियों को गतिशील रूप से उत्पन्न करना आवश्यक है: उपयोगकर्ता को दर्ज करने के लिए संकेत दें सूची दृश्य (क्रमांकित (संख्या 1) या लेबल (संख्या 2)) और फिर सूची आइटम की संख्या.
- उत्तर के आधार पर, आवश्यक संख्या के साथ बुलेटेड या क्रमांकित सूची के टैग प्रदर्शित करें।
- यदि कोई गैर-मौजूद सूची प्रकार दर्ज किया गया है, तो संदेश प्रदर्शित करें "कृपया सही प्रकार दर्ज करें!" और प्रोग्राम से बाहर निकलें ()।
आइए टैग याद रखें:
गिने सूची टैग:
<ol\u003e <li\u003e li > <li\u003e li > <li\u003e li > </ ol\u003e |
बुलेटेड सूची टैग:
var listType \u003d prompt (एक बुलेटेड सूची के लिए "" 1 "दर्ज करें, एक क्रमांकित सूची के लिए" 2 ");
- , चिह्नित (संख्या 2) के लिए - टैग
- ... यदि आपने एक अलग मान दर्ज किया है, तो एक नोट प्रिंट करें और कार्यक्रम समाप्त करें:
- एक चर शुरू करो kolvo उपयोगकर्ता द्वारा मोडल में दर्ज किया गया मान:
- स्ट्रिंग मान को संख्यात्मक मान में बदलने के लिए, parseInt फ़ंक्शन का उपयोग करें:
- चूँकि सूची के प्रकार के आधार पर सूचियों को संबंधित टैग के साथ बंद किया जाता है, इसलिए समापन टैग को प्रिंट करें:
- ") (चेतावनी (" सही प्रकार दर्ज करें "); बाहर निकलें;)
var kolvo \u003d प्रॉम्प्ट ("आइटम की संख्या दर्ज करें");
के लिए (var i \u003d 1; i<=kolvo; i++) document.write("");
if (listType \u003d\u003d "1") document.write ("") और यदि (listType \u003d\u003d" 2 ") document.write ("" ) ; |
if (listType \u003d\u003d "1") document.write ("
जेएस कार्य 3_11।
एक स्क्रिप्ट लिखें जो टैग प्रदर्शित करता है इनपुट(नियंत्रित) विभिन्न प्रकारों पर, दर्ज अंकों के आधार पर:
1
- पाठ का क्षेत्र,
2
- बटन,
3
- रेडियो(स्विच)।
प्रदर्शित टैग की संख्या भी अनुरोध की जानी चाहिए।
आइए टैग याद रखें:
1 के लिए - पाठ क्षेत्र: 2 के लिए - बटन: 3 के लिए - रेडियो:
आउटपुट उदाहरण:
जेएस कार्य 3_12। छोरों के लिए जावास्क्रिप्ट का उपयोग करके एक 9x9 चेकरबोर्ड बनाएं। "ड्रा" बोर्ड को टेबल के लिए html टैग होना चाहिए:
आइए टैग याद रखें:
<टेबल बॉर्डर \u003d "1" चौड़ाई \u003d "30%"\u003e <tr\u003e <td\u003e-</ td\u003e | -</ td\u003e </ tr\u003e </ तालिका\u003e |
- | - |
- 9 लाइनों को खींचने के लिए, आपको काउंटर i के साथ लूप के लिए एक बाहरी व्यवस्थित करने की आवश्यकता है।
- प्रत्येक पंक्ति में 9 सेल खींचने के लिए, आपको काउंटर जे के साथ लूप के लिए एक आंतरिक (नेस्टेड) \u200b\u200bव्यवस्थित करने की आवश्यकता है।
- सेल और लाइन टैग रेंडर करने के लिए document.write विधि का उपयोग करें।
परिणाम:
इसके अतिरिक्त:
- लूप काउंटर (i और j) का उपयोग करके तालिका कोशिकाओं में गुणन तालिका प्रिंट करें।
- पहली पंक्ति और पहला कॉलम लाल पृष्ठभूमि के साथ प्रदर्शित करें (तालिका सेल bgcolor की विशेषता):
<td bgcolor \u003d "लाल"\u003e-</ td\u003e -
परिणाम:
आत्म-नियंत्रण के लिए प्रश्न:
- बताएं कि डायनामिक पेज बिल्डिंग का क्या मतलब है?
- डायनामिक पेज बिल्डिंग के लिए सबसे अधिक इस्तेमाल की जाने वाली भाषा निर्माण क्या है?
जावास्क्रिप्ट भाषा के चक्रीय कथन - जबकि
जबकि कथन के लिए वाक्य रचना है:
जबकि (स्थिति) (// कथन के विवरण ..);
उदाहरण: दो तक की शक्ति प्रदर्शित करें 1000 (2, 4, 8 ... 512)। अलर्ट () विधि का उपयोग करें
✍ समाधान:
- स्क्रिप्ट की सूची:
- एक ब्राउज़र में परिणाम का परीक्षण करें।
1 2 3 4 5 | var a \u003d 1; जबकि एक< 1000 ) { a*= 2 ; alert(a) ; } |
var a \u003d 1; जबकि एक< 1000){ a*=2; alert(a); }
एक * \u003d 2 → यौगिक असाइनमेंट के संचालन का उपयोग किया जाता है: असाइनमेंट के साथ संयुक्त उत्पाद, अर्थात्। समान \u003d a * 2
कुछ समय में लूप कैसे टूट और जारी रहता है?
उदाहरण:
var a \u003d 1; जबकि एक< 1000 ) { a*= 2 ; if (a== 64 ) continue ; if (a== 256 ) break ; alert(a) ; } |
var a \u003d 1; जबकि एक< 1000){ a*=2; if (a==64) continue; if (a==256) break; alert(a); }
दो की शक्तियां आउटपुट होंगी 128 समावेशी, और मूल्य 64 छोड़ दिया जाएगा। उन। संवाद बॉक्स में हम देखेंगे: 2 4 8 16 32 128
जेएस कार्य 3_13। निम्नलिखित कोड स्निपेट क्या मान प्रदर्शित करेंगे?
var काउंटर \u003d 5; जबकि (काउंटर< 10) { counter++; document.write("Counter " + counter); break; document.write("Эта строка не выполнится."); }
जेएस कार्य 3_14। इरेक्शन कोड लिखें एक्स सीमा तक yथोड़ी देर लूप का उपयोग करना। परिवर्तनशील मानों का उपयोग करें और चेतावनी () का उपयोग करके परिणाम का उत्पादन करें।
कोड को पूरा करें:
1 2 3 4 5 6 7 8 9 | var x \u003d ...; var y \u003d ...; काउंटर \u003d 1; चिस्लो \u003d एक्स; जबकि (...) (chislo \u003d x * ...; काउंटर \u003d ...;) अलर्ट (chislo); |
var x \u003d ...; var y \u003d ...; काउंटर \u003d 1; चिस्लो \u003d एक्स; जबकि (...) (chislo \u003d x * ...; काउंटर \u003d ...;) अलर्ट (chislo);
एक संख्या के भाज्य को खोजने के लिए डिज़ाइन किए गए कार्यक्रम में त्रुटि को ठीक करें:
1 2 3 4 5 6 7 8 9 10 11 12 13 | var काउंटर \u003d प्रॉम्प्ट ("एक नंबर दर्ज करें"); var factorial \u003d 1; डॉक्यूमेंट.राइट ( "संख्या तथ्य:" + काउंटर + "! \u003d"); do (if (काउंटर \u003d\u003d 0) (factorial \u003d 1; break;) factorial \u003d factorial / counter; काउंटर; काउंटर + 1;) जबकि (काउंटर\u003e 0); document.write (factorial); |
var काउंटर \u003d प्रॉम्प्ट ("एक नंबर दर्ज करें"); var factorial \u003d 1; document.write ("संख्या तथ्य:" + काउंटर + "! \u003d"); do (if (काउंटर \u003d\u003d 0) (factorial \u003d 1; break;) factorial \u003d factorial / counter; काउंटर; काउंटर + 1;) जबकि (काउंटर\u003e 0); document.write (factorial);
जेएस कार्य 3_16। उपयोगकर्ता इनपुट के लिए कार्यक्रम को संशोधित करें:
जब तक उपयोगकर्ता वास्तव में एक नाम दर्ज नहीं करता है, तब तक उपयोगकर्ता नाम के लिए संकेत दें (अर्थात फ़ील्ड वास्तव में भरा हुआ है और रद्द कुंजी दबाए नहीं है)। जब नाम दर्ज किया जाता है, तो आउटपुट "नमस्कार नाम!"... दस्तावेज़।
कैसे जावास्क्रिप्ट में त्रुटियों को खोजने के लिए?
कुछ मामलों में, पृष्ठ पर कोड किसी कारण से काम नहीं करता है। त्रुटि की तलाश कहां करें? ऐसे मामलों में, आप try..catch स्टेटमेंट का उपयोग कर सकते हैं।
Try..catch स्टेटमेंट कोड के एक टुकड़े को निष्पादित करने की कोशिश करता है, और यदि कोड में कोई त्रुटि है, तो स्क्रीन पर एक त्रुटि प्रदर्शित करना संभव है।
त्रुटि e.message ऑब्जेक्ट में संग्रहीत है।
आइए एक उदाहरण का उपयोग करके ऑपरेटर के काम पर विचार करें:
उदाहरण: कार्यक्रम में एक त्रुटि के साथ एक बयान लिखें। संदिग्ध गलत कोड में त्रुटि की जाँच करें: यदि कोड में कोई त्रुटि है, तो एक संदेश प्रदर्शित करें "एरर हैंडलिंग: एरर नेम"... गलत ऑपरेटर की जाँच करने के बाद, चाहे कोड में कोई त्रुटि हो, संदेश जारी करें "परिष्करण क्रियाएं"
✍ समाधान:
- त्रुटि के साथ एक संदेश के रूप में, हम संकेत () विधि का उपयोग करेंगे, जो एक त्रुटि के साथ लिखा गया है - प्रोम्ट ()... एक कोशिश ब्लॉक में त्रुटि संदेश संलग्न करें:
- त्रुटि संदेश को कैच ब्लॉक में रखा जाना चाहिए:
- अंतिम संदेश को रखें, जो कि कोड में कोई त्रुटि है, भले ही किसी अंतिम ब्लॉक में प्रदर्शित किया गया हो:
चेतावनी ("पहले"); प्रयास करें (प्रोमोट ("एक नंबर दर्ज करें"); // ऑपरेटर एक त्रुटि के साथ)
अंग्रेजी से कोशिश करें। - "कोशिश", इस प्रकार, हम एक कोड के टुकड़े के सामने एक कोशिश बयान डालते हैं जिसमें एक त्रुटि हो सकती है (हमारे मामले में, वास्तव में एक त्रुटि है)।
6 7 8 9 | पकड़ (ई) (सतर्क "गलती संभालना:"+ e.message); ) |
पकड़ (ई) (चेतावनी ("त्रुटि से निपटने:" + e.message);)
यदि वास्तव में कोई त्रुटि है, तो कैच स्टेटमेंट ई ऑब्जेक्ट में इस त्रुटि को संग्रहीत करता है। बाद में इसे डायलॉग बॉक्स - e.message में प्रदर्शित किया जा सकता है।
अंत में (अलर्ट ("परिष्करण क्रियाएं");) चेतावनी ("बाद");
यदि कोई त्रुटि है, तो हमारे उदाहरण में प्रदर्शित करने के बाद दुभाषिया कैच ब्लॉक को निष्पादित करने के लिए आगे बढ़ेगा, और फिर अंत में (अंग्रेजी "पूरा", "अंत में") से, जो हमेशा निष्पादित किया जाएगा, भले ही कोई त्रुटि थी या नहीं। भले ही कैच ब्लॉक में कोई त्रुटि थी।
जरूरी: अंत में ब्लॉक निर्माण में वैकल्पिक है।
जेएस कार्य 3_17। निम्नलिखित संशोधनों के साथ ऊपर दिए गए उदाहरण का पालन करें:
सारांश:
पाठ ने निम्नलिखित जावास्क्रिप्ट ऑपरेटरों और निर्माणों को कवर किया:
जावास्क्रिप्ट सशर्त कथन:
लूप ऑपरेटर्स:
अंतिम कार्य Js 3_18।
दो के लिए एक खेल बनाएँ:
- कार्यक्रम पहले खिलाड़ी से एक नंबर दर्ज करने के लिए कहता है 1 इससे पहले 100 (दूसरा खिलाड़ी दर्ज संख्या नहीं देखता है)। फिर दूसरे खिलाड़ी को दर्ज संख्या का अनुमान लगाने के लिए कहा जाता है। संदेश प्रतिक्रिया में प्रदर्शित होता है "कुछ" या "बहुत" दर्ज किए गए जवाब के आधार पर। यदि खिलाड़ी सही ढंग से अनुमान लगाता है, तो बधाई प्रदर्शित की जाती है। यदि वह गलत अनुमान लगाता है, तो खेल जारी रहता है (जब तक कि संख्या का वास्तव में अनुमान नहीं लगाया जाता है)।
- प्रयासों की संख्या की गणना करें और संख्या का अनुमान लगाने पर परिणाम लौटाएं।
आत्म-नियंत्रण के लिए प्रश्न:
- जब फॉर लूप का उपयोग करना उचित है? इसके उपयोग का एक उदाहरण क्या है।
- प्रयत्न का उद्देश्य क्या है..प्रश्न कथन?
- प्रत्येक प्रयास के उद्देश्य को स्पष्ट करें। कथन स्टेट ब्लॉक।
जावास्क्रिप्ट में एक सशर्त निर्माण होता है जो एक कार्यक्रम के निष्पादन प्रवाह को प्रभावित करता है। अगर (अंग्रेजी में अगर) कुछ है, कुछ सत्य है, तो एक काम करो, अन्यथा (अंग्रेजी में) - दूसरा करो।
अगर बयान
आइए नज़र डालते हैं कि यदि कथन कैसे काम करता है, तो यह सरल है और बहुत स्पष्टीकरण की आवश्यकता नहीं है।
यदि (स्थिति) (यदि स्थिति सत्य है तो निष्पादित करने के लिए कोड)
यह सरल है: यदि स्थिति सही है, तो कोड (...) ब्लॉक निष्पादित किया जाता है।
वार अंक \u003d 4; if (अंक \u003d\u003d 4) (document.write ("अंक 4. है");)
कुछ अजीब कोड किया जा सकता है:
वार अंक \u003d 4; अगर (सत्य) (डॉक्यूमेंट.राइट करें ("स्थिति सत्य है।");)
बड़ा बयान
एक और बयान एक if स्टेटमेंट के साथ संयोजन में उपयोग किया जा सकता है। यह "अन्यथा" में अनुवाद करता है और एक वैकल्पिक कोड निर्दिष्ट करता है।
वार अंक \u003d 4; अगर (अंक
इस उदाहरण में घुंघराले ब्रेसिज़ की अलग-अलग वर्तनी पर ध्यान दें यदि और कुछ कथन हैं। इस तरह से लिखना अनिवार्य नहीं है, दोनों वाक्यविन्यास सही हैं।
एक और बयान के बाद एक नया बयान दिया जा सकता है। यह कई स्थितियों का परीक्षण करेगा।
वार अंक \u003d 4; अगर (अंक
PHP में PHP नहीं है (एक शब्द में) एक कथन है।
यदि आपको केवल एक कथन को निष्पादित करने की आवश्यकता है, तो ब्लॉक घुंघराले ब्रेसिज़ (...) अनावश्यक हैं। हमारे उदाहरण में, आपको उन्हें लिखने की आवश्यकता नहीं है:
वार अंक \u003d 4; अगर (अंक
जावास्क्रिप्ट में झूठ
यदि (स्थिति) कथन बूलियन प्रकार (सही या गलत) के लिए कोष्ठक स्थिति (अभिव्यक्ति) का मूल्यांकन और रूपांतरण करता है।
आइए दोहराते हैं कि जावास्क्रिप्ट में एक झूठ है।
- नंबर 0 (शून्य)।
- खाली लाइन ""।
- बूलियन झूठी :)
- मान शून्य है।
- मान अपरिभाषित है।
- NaN (संख्या नहीं) मान।
बाकी सब सच है।
संभावित त्रुटियों की एक जोड़ी:
यदि ("असत्य") दस्तावेज़.लेखित करें ("यह सत्य है।
"), अगर (असत्य) दस्तावेज़। राइट करें (" यह सच है।
");
यहां आपको बूलियन प्रकार के मूल्य से स्ट्रिंग "झूठ" (उद्धरण में) को भेद करने की आवश्यकता है।
अगर ("") डॉक्यूमेंट.राइट करें ("यह सत्य है।
"); अन्य दस्तावेज। राइट करें (" यह गलत है।
");
यहां आपको स्ट्रिंग को "(एक स्थान के अंदर), खाली स्ट्रिंग से" "भेद करने की आवश्यकता है। एक स्ट्रिंग के अंदर का स्थान इसे खाली नहीं करता है, बल्कि एक पात्र होता है। दुभाषिया के लिए, यह एक पत्र या एक अंतरिक्ष से कोई फर्क नहीं पड़ता - एक प्रतीक एक प्रतीक है।
जावास्क्रिप्ट में अन्य शर्त
- जावास्क्रिप्ट स्विच निर्माण।
- संचालक प्रश्न चिन्ह
सशर्त संचालक
सशर्त कथन आपको निर्दिष्ट अभिव्यक्ति के मूल्य के आधार पर अन्य कथनों को छोड़ या निष्पादित करने देते हैं। ये ऑपरेटर कार्यक्रम में निर्णय बिंदु होते हैं और कभी-कभी कहलाते हैं शाखाओं के संचालक.
यदि आप कल्पना करते हैं कि कार्यक्रम एक सड़क है, और जावास्क्रिप्ट दुभाषिया इसके साथ चलने वाला एक यात्री है, तो सशर्त बयानों को चौराहों के रूप में सोचा जा सकता है, जहां कार्यक्रम कोड दो या अधिक सड़कों में कांटे, और ऐसे चौराहों पर दुभाषिया चुनते हैं कि कौन सी सड़क लेनी है। ...
यदि / और बयान
यदि कथन एक मूल नियंत्रण कथन है जो जावास्क्रिप्ट दुभाषिया को निर्णय लेने की अनुमति देता है, या अधिक सटीक रूप से, शर्तों के आधार पर बयानों को निष्पादित करता है। यदि कथन के दो रूप हैं। प्रथम:
अगर (अभिव्यक्ति) बयान
इस रूप में, पहले अभिव्यक्ति का मूल्यांकन किया जाता है। यदि परिणाम सत्य है, तो कथन निष्पादित किया जाता है। यदि अभिव्यक्ति गलत है, तो कथन निष्पादित नहीं किया जाता है। उदाहरण के लिए:
यदि (उपयोगकर्ता नाम \u003d\u003d null) // यदि उपयोगकर्ता नाम शून्य या अपरिभाषित उपयोगकर्ता नाम \u003d "एलेक्स" है; // इसे परिभाषित करें
ध्यान दें कि सशर्त अभिव्यक्ति के आसपास कोष्ठक if स्टेटमेंट सिंटैक्स का एक आवश्यक हिस्सा हैं।
यदि कथन का दूसरा रूप एक और खंड का परिचय देता है, जिसे अभिव्यक्ति गलत होने पर निष्पादित किया जाता है। इसका सिंटैक्स:
if (अभिव्यक्ति) statement1 और कथन 2
यदि अभिव्यक्ति सही हो जाती है, और कथन 2 यदि अभिव्यक्ति झूठी आती है, तो यह प्रपत्र कथन 1 को निष्पादित करता है। उदाहरण के लिए:
अगर (n \u003d\u003d 1) कंसोल.लॉग ("1 नया संदेश प्राप्त हुआ।"); और सांत्वना.लॉग ("प्राप्त" + n + "नए संदेश।");
यदि कथन है तो
यदि / अन्यथा कथन अभिव्यक्ति के मूल्य का मूल्यांकन करता है और परिणाम के आधार पर प्रोग्राम कोड के किसी विशेष टुकड़े को निष्पादित करता है। लेकिन क्या होगा यदि आप कई विखंडू में से एक को निष्पादित करना चाहते हैं? ऐसा करने का एक संभावित तरीका है कि यदि कथन हो तो किसी अन्य का उपयोग करें। यह औपचारिक रूप से एक स्टैंड-अलोन जावास्क्रिप्ट ऑपरेटर नहीं है; यह सिर्फ एक सामान्य प्रोग्रामिंग शैली है जो एक दोहराव का उपयोग करती है यदि / और कथन:
अगर (n \u003d\u003d 1) (// एक्सक्यूट ब्लॉक 1) और अगर (एन \u003d\u003d 2) (// एक्सक्यूट ब्लॉक 2) और अगर (एन \u003d\u003d 3) (// एक्सक्यूट ब्लॉक 3) और (// अगर नहीं पिछले बयानों में से एक को निष्पादित नहीं किया गया था, ब्लॉक 4 को निष्पादित करें)
इस स्निपेट के बारे में कुछ खास नहीं है। यह केवल बयानों का एक क्रम है, जहां प्रत्येक यदि कथन पिछले कथन के अन्य कथन का हिस्सा है।
स्विच स्टेटमेंट
यदि स्टेटमेंट फ्लो में स्टेटमेंट ब्रांचिंग करता है, और स्टेटमेंट्स के साथ मल्टी-पोजिशन ब्रांचिंग को कई और के साथ लागू किया जा सकता है। हालांकि, यह हमेशा सबसे अच्छा समाधान नहीं होता है, खासकर अगर सभी शाखाएं एक ही अभिव्यक्ति के मूल्य पर निर्भर करती हैं। इस मामले में, कई बयानों में एक ही अभिव्यक्ति के मूल्य का पुनर्मूल्यांकन करना व्यर्थ है।
स्विच स्टेटमेंट को ऐसी स्थितियों के लिए डिज़ाइन किया गया है। स्विच कीवर्ड के बाद एक कोष्ठक की अभिव्यक्ति और घुंघराले ब्रेसों में कोड का एक ब्लॉक होता है:
स्विच (अभिव्यक्ति) (कथन)
हालांकि, स्विच स्टेटमेंट का पूरा सिंटैक्स यहां दिखाए गए से अधिक जटिल है। ब्लॉक में विभिन्न स्थानों को कीवर्ड के साथ चिह्नित किया गया है मामलाएक अभिव्यक्ति और एक बृहदान्त्र चरित्र के बाद।
जब एक स्विच स्टेटमेंट निष्पादित किया जाता है, तो यह अभिव्यक्ति के मूल्य का मूल्यांकन करता है और फिर एक केस लेबल की तलाश करता है जो उस मूल्य से मेल खाता है (पहचान ऑपरेटर \u003d\u003d\u003d का उपयोग करके निर्धारित किया जाता है)। यदि कोई लेबल पाया जाता है, तो केस ब्लॉक के बाद पहले स्टेटमेंट पर कोड ब्लॉक निष्पादित किया जाता है। यदि मिलान मूल्य वाला कोई भी केस लेबल नहीं मिलता है, तो विशेष लेबल के बाद पहले कथन से निष्पादन शुरू होता है चूक:... यदि कोई डिफ़ॉल्ट नहीं है: लेबल, संपूर्ण स्विच ब्लॉक छोड़ दिया गया है।
स्विच स्टेटमेंट का संचालन शब्दों में व्याख्या करना मुश्किल है, स्पष्टीकरण एक उदाहरण के साथ बहुत स्पष्ट दिखता है। निम्न स्विच स्टेटमेंट दोहराया के बराबर है यदि / अन्यथा पिछले उदाहरण में दिखाया गया है:
स्विच (n) (केस 1: // निष्पादित करें यदि n \u003d\u003d\u003d 1 // निष्पादित ब्लॉक 1 ब्रेक; // यहां रोकें केस 2: // निष्पादित करें यदि n \u003d\u003d\u003d 2 // निष्पादित करें ब्लॉक 2 ब्रेक; / / स्टॉप हियर केस 3: // एक्सेक्यूट अगर n \u003d\u003d\u003d 3 // एक्सक्यूट ब्लॉक 3 ब्रेक; // स्टॉप डिफॉल्ट डिफॉल्ट: // अगर बाकी सब फेल हो गया ... // एक्सक्यूट ब्लॉक 4 ब्रेक; // यहां रोकें )
कीवर्ड पर ध्यान दें टूटना प्रत्येक केस ब्लॉक के अंत में। ब्रेक स्टेटमेंट स्विच स्टेटमेंट के अंत में नियंत्रण स्थानांतरित करता है और जारी स्टेटमेंट्स का निष्पादन जारी रखता है। स्विच स्टेटमेंट में केस स्टेटमेंट केवल निष्पादित किए जा रहे कोड के शुरुआती बिंदु को निर्दिष्ट करते हैं, लेकिन किसी भी समाप्ति बिंदु को निर्दिष्ट नहीं करते हैं।
यदि कोई ब्रेक स्टेटमेंट नहीं हैं, तो स्विच स्टेटमेंट केस लेबल के साथ कोड के ब्लॉक को एक्सप्रेशन के मान के अनुरूप निष्पादित करना शुरू कर देगा और तब तक स्टेटमेंट्स को निष्पादित करना जारी रखेगा जब तक यह ब्लॉक के अंत तक नहीं पहुंच जाता। दुर्लभ मामलों में, यह कोड लिखने के लिए उपयोगी है जो एक केस लेबल से अगले में कूदता है, लेकिन 99% समय में, आपको प्रत्येक केस ब्लॉक को ब्रेक स्टेटमेंट के साथ सावधानीपूर्वक समाप्त करना चाहिए। (किसी फ़ंक्शन के अंदर स्विच का उपयोग करते समय, आप ब्रेक के बजाय रिटर्न स्टेटमेंट का उपयोग कर सकते हैं। ये दोनों स्टेटमेंट स्विच स्टेटमेंट को समाप्त कर देते हैं और अगले केस लेबल पर जाने से रोकते हैं।)
नीचे एक स्विच स्टेटमेंट का उपयोग करने का अधिक व्यावहारिक उदाहरण है, यह एक मान को स्ट्रिंग में इस तरह से परिवर्तित करता है, जो मूल्य के प्रकार पर निर्भर करता है:
फ़ंक्शन कन्वर्ट (x) (स्विच (टाइपो x) (// एक संख्या को हेक्साडेसिमल पूर्णांक मामले में "नंबर" में कनवर्ट करें: x.toString (16) पर लौटें; // एक उद्धृत स्ट्रिंग केस "स्ट्रिंग" लौटें: "+" x + "" "; // किसी अन्य प्रकार को सामान्य तरीके से रूपांतरित किया जाता है: वापसी x.toString ();)) कंसोल.लॉग (कन्वर्ट (1067)); // परिणाम "42 बी"
ध्यान दें कि पिछले दो उदाहरणों में, केस कीवर्ड संख्याओं या स्ट्रिंग शाब्दिकों द्वारा अनुसरण किए गए थे। यह है कि स्विच स्टेटमेंट को अक्सर अभ्यास में कैसे उपयोग किया जाता है, लेकिन ईसीएमएस्क्रिप्ट मानक आपको मामले के बाद मनमाने ढंग से अभिव्यक्ति निर्दिष्ट करने की अनुमति देता है।
स्विच स्टेटमेंट पहले स्विच कीवर्ड के बाद एक्सप्रेशन का मूल्यांकन करता है और फिर केस के एक्सप्रेशन उसी क्रम में होता है, जिसमें वे तब तक निर्दिष्ट होते हैं जब तक कि मैचिंग वैल्यू नहीं मिलती। मैच का तथ्य \u003d\u003d\u003d पहचान ऑपरेटर का उपयोग करके निर्धारित किया जाता है, \u003d\u003d समानता ऑपरेटर का उपयोग नहीं करते, इसलिए अभिव्यक्ति को किसी भी प्रकार के रूपांतरण के बिना मेल खाना चाहिए।
क्योंकि जब भी स्विच स्टेटमेंट निष्पादित किया जाता है, तो सभी केस एक्सप्रेशन का मूल्यांकन नहीं किया जाता है, आपको ऐसे साइड इफेक्ट्स का उपयोग करने से बचना चाहिए जिनके साइड इफेक्ट्स हैं, जैसे फ़ंक्शन कॉल और असाइनमेंट। अपने मामले के भावों को निरंतर अभिव्यक्तियों तक सीमित करना सबसे सुरक्षित है।
जैसा कि पहले बताया गया है, यदि कोई भी स्थिति स्विच अभिव्यक्ति से मेल नहीं खाती है, तो स्विच स्टेटमेंट डिफ़ॉल्ट रूप से लेबल किए गए स्टेटमेंट को निष्पादित करना शुरू कर देता है:। यदि कोई डिफ़ॉल्ट नहीं है: लेबल, स्विच स्टेटमेंट का शरीर पूरी तरह से छोड़ दिया गया है। ध्यान दें कि पिछले उदाहरणों में, सभी केस लेबल के बाद डिफ़ॉल्ट: लेबल स्विच स्टेटमेंट के मुख्य भाग में दिखाई देता है। यह उसके लिए एक तार्किक और सामान्य जगह है, लेकिन वास्तव में यह एक स्विच स्टेटमेंट में कहीं भी स्थित हो सकता है।