JavaScript-এর Strict Mode হলো এমন একটি বিশেষ execution mode যেখানে JavaScript code আরও কঠোর নিয়ম মেনে execute হয়। Strict Mode চালু করলে কিছু সাধারণ ভুলকে JavaScript error হিসেবে ধরতে পারে এবং কিছু unsafe আচরণ সীমিত করে।
Strict Mode চালু করার জন্য সাধারণত "use strict" directive ব্যবহার করা হয়। এটি পুরো script অথবা নির্দিষ্ট function-এর জন্য ব্যবহার করা যায়।
Strict Mode ব্যবহার করলে code-এর কিছু ভুল আগে শনাক্ত করা সহজ হয় এবং variable ব্যবহারে আরও স্পষ্ট নিয়ম মেনে চলতে হয়।নিচের উদাহরণটি লক্ষ্য করুন এবং browser-এর console-এ এর ফলাফল দেখুন।
"use strict"; let name = "Anik"; console.log(name);
Strict Mode চালু করার সবচেয়ে সহজ উপায় হলো script-এর শুরুতে "use strict" লেখা। এটি একটি directive হিসেবে কাজ করে।
একটি script-এর শুরুতে "use strict" লিখলে সেই script-এর পরের code Strict Mode-এ execute হয়।
Directive-এর বানান ও quotation ঠিক রাখা গুরুত্বপূর্ণ।নিচের উদাহরণটি লক্ষ্য করুন এবং browser-এর console-এ এর ফলাফল দেখুন।
"use strict"; let x = 10; let y = 20; console.log(x + y);
শুধু একটি নির্দিষ্ট function-এর ভিতরেও Strict Mode চালু করা যায়। এজন্য function-এর প্রথম statement হিসেবে "use strict" লিখতে হয়।
এভাবে পুরো script-কে Strict Mode-এ না নিয়েও নির্দিষ্ট function-এর code কঠোর নিয়মে চালানো সম্ভব।
Function-এর ভিতরে directiveটি প্রথম statement হিসেবে রাখা উচিত।নিচের উদাহরণটি লক্ষ্য করুন এবং browser-এর console-এ এর ফলাফল দেখুন।
function test() { "use strict"; let value = 100; console.log(value); } test();
Strict Mode-এর গুরুত্বপূর্ণ বৈশিষ্ট্য হলো declare না করা variable-এ value assign করলে error হতে পারে। Non-strict mode-এ এমন code কখনও কখনও global property তৈরি করতে পারে।
তাই variable ব্যবহার করার আগে let, const অথবা var দিয়ে declare করা উচিত।
এটি accidental global variable তৈরির ঝুঁকি কমাতে সাহায্য করে।নিচের উদাহরণটি লক্ষ্য করুন এবং browser-এর console-এ এর ফলাফল দেখুন।
"use strict"; function test() { total = 100; } test();
Strict Mode-এ function-এর ভিতরে this-এর আচরণ কিছু ক্ষেত্রে non-strict mode থেকে আলাদা হয়। সাধারণ function call-এর ক্ষেত্রে this undefined হতে পারে।
এতে function-এর ভিতরে কোন object-এর context ব্যবহার হচ্ছে তা আরও স্পষ্টভাবে বোঝা যায়।
তবে method call, constructor call বা arrow function-এর this rules আলাদা হতে পারে।নিচের উদাহরণটি লক্ষ্য করুন এবং browser-এর console-এ এর ফলাফল দেখুন।
"use strict"; function showThis() { console.log(this); } showThis();
Strict Mode-এ read-only বা non-writable property পরিবর্তন করার চেষ্টা করলে error হতে পারে। এতে object-এর নির্দিষ্ট property অনিচ্ছাকৃতভাবে পরিবর্তন হওয়ার বিষয়টি সহজে ধরা পড়ে।
Object.defineProperty() ব্যবহার করে একটি property non-writable করা যায়।
Strict Mode এখানে silent failure-এর পরিবর্তে error দেখাতে সাহায্য করে।নিচের উদাহরণটি লক্ষ্য করুন এবং browser-এর console-এ এর ফলাফল দেখুন।
"use strict"; const user = {}; Object.defineProperty(user, "name", { value: "Anik", writable: false }); user.name = "Rahim";
Strict Mode-এ একটি function-এর parameter list-এ একই নাম একাধিকবার ব্যবহার করা নিষিদ্ধ। এতে function-এর parameter নিয়ে ambiguity কমে।
Parameter-এর নাম আলাদা রাখা code readability এবং maintainability-এর জন্যও ভালো।
এই নিয়ম বিশেষ করে ভুল করে একই parameter name লিখে ফেলার সমস্যা ধরতে সাহায্য করে।নিচের উদাহরণটি লক্ষ্য করুন এবং browser-এর console-এ এর ফলাফল দেখুন।
"use strict"; function sum(a, a) { return a + a; } console.log(sum(10, 20));
Strict Mode-এ কিছু property বা variable delete করার চেষ্টা করলে error হতে পারে। বিশেষ করে delete operator-এর অবৈধ ব্যবহার সহজে শনাক্ত করা যায়।
এটি JavaScript code-এ accidental deletion-এর মতো ভুল ধরতে সাহায্য করে।
কোন property delete করা যাবে কি না তা object-এর property configuration-এর উপরও নির্ভর করে।নিচের উদাহরণটি লক্ষ্য করুন এবং browser-এর console-এ এর ফলাফল দেখুন।
"use strict"; let value = 100; delete value;
Strict Mode কিছু ক্ষেত্রে ভবিষ্যৎ JavaScript feature-এর জন্য reserved বা restricted identifier ব্যবহারে অতিরিক্ত নিয়ম প্রয়োগ করে। ফলে এমন কিছু শব্দ identifier হিসেবে ব্যবহার করা উচিত নয়।
Modern JavaScript-এ নতুন syntax ও keyword যোগ হওয়ায় reserved word সম্পর্কে সতর্ক থাকা প্রয়োজন।
বিশেষ করে নতুন code লেখার সময় standard JavaScript keyword ব্যবহার করা নিরাপদ।নিচের উদাহরণটি লক্ষ্য করুন এবং browser-এর console-এ এর ফলাফল দেখুন।
"use strict"; let className = "JavaScript"; console.log(className);
Strict Mode-এর মূল উদ্দেশ্য হলো JavaScript code-এর কিছু অস্পষ্ট বা ঝুঁকিপূর্ণ আচরণকে সীমিত করা এবং ভুল code দ্রুত শনাক্ত করতে সাহায্য করা।
এটি accidental global variable, invalid assignment এবং কিছু syntax-related mistake ধরতে সহায়তা করে।
বড় project-এ consistent coding rules বজায় রাখার ক্ষেত্রেও Strict Mode উপকারী হতে পারে।নিচের উদাহরণটি লক্ষ্য করুন এবং browser-এর console-এ এর ফলাফল দেখুন।
"use strict"; function calculate(a, b) { const result = a + b; return result; } console.log(calculate(10, 20));