सावधान रहे!
बात करना चाहिए तुरंत ट्रिगर अलार्म की घंटी पहली पंक्ति है कि: var month = '';
- क्यों इस चर के बजाय एक रिक्त स्ट्रिंग पर प्रारंभ किया जा रहा है, null
या undefined
? यह सिर्फ आदत या कॉपी / पेस्ट किया गया कोड हो सकता है, लेकिन जब तक आप यह नहीं जानते कि यकीन है कि जब आप कोड को रीफैक्योर कर रहे हों तो इसे अनदेखा करना सुरक्षित नहीं है।
यदि आप महीने के नामों की एक सरणी का उपयोग करते हैं और अपने कोड को var month = months[mm-1];
बदलते हैं तो आप व्यवहार को बदल रहे हैं, क्योंकि अब सीमा के बाहर की संख्याओं के लिए, या गैर-संख्यात्मक मान month
होंगे undefined
। आप जान सकते हैं कि यह ठीक है, लेकिन कई स्थितियां ऐसी हैं जहां यह खराब होगा।
उदाहरण के लिए, मान लें कि आपका switch
कार्य किसी फ़ंक्शन में है monthToName(mm)
, और कोई व्यक्ति आपके फ़ंक्शन को इस तरह बुला रहा है:
var monthName = monthToName(mm);
if (monthName === '') {
alert("Please enter a valid month.");
} else {
submitMonth(monthName);
}
अब यदि आप किसी ऐरे का उपयोग करके बदल जाते हैं और वापस लौटते हैं monthName[mm-1]
, तो कॉलिंग कोड अब इच्छानुसार कार्य नहीं करेगा, और undefined
जब यह चेतावनी प्रदर्शित करने वाला होता है तो यह मान जमा करेगा । मैं यह नहीं कह रहा हूं कि यह अच्छा कोड है, लेकिन जब तक आपको यह पता नहीं होता कि कोड का उपयोग कैसे किया जा रहा है, आप अनुमान नहीं लगा सकते।
या हो सकता है कि मूल आरंभीकरण वहाँ था क्योंकि कुछ कोड आगे लाइन मान लेते हैं जो month
हमेशा एक स्ट्रिंग होगा, और कुछ ऐसा करता है month.length
- इसके परिणामस्वरूप अमान्य महीनों के लिए फेंक दिया जाएगा और संभवतः कॉलिंग स्क्रिप्ट को पूरी तरह से मार देगा।
यदि आप करते हैं पता है पूरे संदर्भ - जैसे यह सब अपने खुद के कोड है, और कोई नहीं-कभी इसका इस्तेमाल करने के लिए जा रहा है, और तुम पर भरोसा है अपने आप को भूल नहीं यदि आप भविष्य में परिवर्तन कुछ समय बनाया - यह व्यवहार बदलने के लिए सुरक्षित हो सकता है इस तरह से, लेकिन कई कीड़े इस तरह की धारणा से आते हैं कि वास्तविक जीवन में आप रक्षात्मक रूप से प्रोग्रामिंग करने और / या व्यवहार को अच्छी तरह से दस्तावेज करने से बहुत बेहतर हैं।
वासमू का उत्तर सही हो जाता है (EDIT: कई अन्य उत्तर, जिनमें स्वीकृत एक भी शामिल है, अब भी तय हो गया है) - आप उपयोग कर सकते हैं months[mm-1] || ''
या यदि आप इसे एक नज़र में अधिक स्पष्ट करना पसंद करेंगे तो क्या हो रहा है, कुछ इस तरह है:
var months = ['January', 'February', ...];
var month;
if (mm >= 1 && m <= 12) {
month = months[mm - 1];
} else {
month = ''; // empty string when not a valid month
}