2011-06-25 16 views
12

मैं जावास्क्रिप्ट में एक स्विच बयान कर रहा हूँ:का उपयोग कर या में ऑपरेटर जावास्क्रिप्ट स्विच बयान

switch($tp_type){ 

    case 'ITP': 
    $('#indv_tp_id').val(data); 
    break; 

    case 'CRP'||'COO'||'FOU': 
    $('#jurd_tp_id').val(data); 
    break; 

} 

लेकिन मुझे लगता है कि अगर मैं या ऑपरेटर का उपयोग यह काम नहीं करता। जावास्क्रिप्ट में मैं इसे ठीक से कैसे करूं? यदि मैं आईटीपी चुनता हूं, तो मुझे आईटीपी मिलता है। लेकिन अगर मैं या तो सीओओ, एफओयू या सीआरपी चुनता हूं तो मुझे हमेशा पहला सीआरपी मिलता है। कृपया मदद करें, धन्यवाद!

+1

यह भी देखें [स्विच केस में जावास्क्रिप्ट या अभिव्यक्ति] (http://stackoverflow.com/questions/6513585/javascript-or-expression-in-a-switch-case)। –

उत्तर

51

आप इसे इस तरह फिर से लिखना चाहिए:

case 'CRP': 
case 'COO': 
case 'FOU': 
    $('#jurd_tp_id').val(data); 
    break; 

आप इसे switch संदर्भ में दस्तावेज देख सकते हैं। के बीच में बिना break रों लगातार case बयान के व्यवहार ("गिरावट के माध्यम से" कहा जाता है) वहाँ वर्णित है:

वैकल्पिक ब्रेक प्रत्येक मामले लेबल के साथ संबद्ध बयान सुनिश्चित करता है कि एक बार मिलान किया बयान स्विच से बाहर कार्यक्रम टूट जाता है स्विच के बाद कथन पर निष्पादित और निष्पादन जारी है। यदि ब्रेक छोड़ा गया है, तो कार्यक्रम स्विच स्टेटमेंट में अगले कथन पर निष्पादन जारी है।

क्यों अपने संस्करण केवल पहले आइटम (CRP) के लिए काम करता है के लिए, यह बस क्योंकि अभिव्यक्ति 'CRP'||'COO'||'FOU''CRP' का मूल्यांकन (के बाद से गैर रिक्त स्ट्रिंग बूलियन संदर्भ में true का मूल्यांकन) है। ताकि case कथन मूल्यांकन के बाद केवल case 'CRP': के समतुल्य हो।

+6

इसे "फॉल-थ्रू" कहा जाता है: http://en.wikipedia.org/wiki/Switch_case। प्रत्येक 'केस' को एक अलग लाइन पर रखकर आईएमओ को पढ़ना आसान हो जाता है। –

संबंधित मुद्दे