সতর্ক হোন!
যে জিনিসটি সঙ্গে সঙ্গে অ্যালার্মের ঘণ্টা ট্রিগার করা উচিত তা হ'ল প্রথম লাইন: 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
- এর ফলে ব্যতিক্রমী মাসগুলিতে ছুঁড়ে ফেলা হবে এবং কলিং স্ক্রিপ্টটি সম্পূর্ণভাবে মেরে ফেলবে।
আপনি যদি না জানেন সমগ্র প্রসঙ্গ - যেমন এটা সব আপনার নিজের কোড আছে, এবং অন্য কেউ কি কখনো এটি ব্যবহার করতে যাচ্ছে, এবং আপনি বিশ্বাস করেন নিজেকে ভুলবেন না আপনি ভবিষ্যতে পরিবর্তন ক্যামনে বানালো - এটা আচরণ পরিবর্তন করার জন্য নিরাপদ হতে পারে এই মত, কিন্তু soooo অনেক বাগ এই ধরণের ধারণা থেকে আসে যে বাস্তব জীবনে আপনি ডিফেন্সিভ প্রোগ্রামিং এবং / অথবা আচরণের পুরোপুরি ডকুমেন্টিং করা থেকে অনেক ভাল।
ওয়াসমুর উত্তরটি সঠিক হয়ে গেছে (সম্পাদনা: গৃহীত উত্তর সহ আরও কয়েকটি উত্তর এখন ঠিক করা হয়েছে) - আপনি কী ব্যবহার করছেন 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
}