স্কোপ (Scope) হচ্ছে একটি ভ্যারিয়েবল বা ফাংশন কোথায় অ্যাক্সেসযোগ্য তা নির্ধারণ করে। স্কোপের মাধ্যমে জানানো হয় যে কোন স্থান থেকে কোন ভ্যারিয়েবল বা ফাংশনে অ্যাক্সেস করা সম্ভব এবং কোথায় তা সম্ভব নয়। ব্লক স্কোপ এবং ফাংশন স্কোপ এই দুইটি স্কোপের ধরন আলাদা।
1. ব্লক স্কোপ (Block Scope)
ব্লক স্কোপ মানে হচ্ছে ভ্যারিয়েবলটি শুধুমাত্র সেই ব্লক বা কোড ব্লকের মধ্যে প্রযোজ্য যেখানে এটি ডিক্লেয়ার করা হয়েছে। কোড ব্লক বলতে, {} এর মধ্যে থাকা কোড অংশকে বোঝানো হয়, যেমন if statement, for loop, while loop, বা অন্য যেকোনো ব্লক।
ES6 এর আগে, var কিওয়ার্ড ভ্যারিয়েবল ঘোষণা করার জন্য ব্যবহৃত হলেও, এটি শুধুমাত্র ফাংশন স্কোপ পর্যন্ত সীমাবদ্ধ ছিল, যার মানে এটি ব্লক স্তরে স্কোপে ছিল না। তবে ES6 এ let এবং const কিওয়ার্ড প্রবর্তিত হওয়ার পর, ভ্যারিয়েবলগুলোকে ব্লক স্কোপে সীমাবদ্ধ করা সম্ভব হয়েছে।
উদাহরণ:
if (true) {
let name = "John"; // ব্লক স্কোপড ভ্যারিয়েবল
const age = 30; // ব্লক স্কোপড কনস্ট্যান্ট
console.log(name); // "John" (ভ্যারিয়েবলটি ব্লক স্কোপের মধ্যে অ্যাক্সেসযোগ্য)
}
console.log(name); // Error: name is not defined (ব্লক স্কোপের বাইরে অ্যাক্সেস করা যাবে না)
console.log(age); // Error: age is not defined (ব্লক স্কোপের বাইরে অ্যাক্সেস করা যাবে না)
এখানে, name এবং age শুধু if ব্লকের মধ্যে অ্যাক্সেসযোগ্য, ব্লক শেষে এগুলির কোনো মান থাকবে না।
2. ফাংশন স্কোপ (Function Scope)
ফাংশন স্কোপ মানে হচ্ছে, ভ্যারিয়েবলটি শুধুমাত্র সেই ফাংশনের মধ্যে প্রযোজ্য যেখানে এটি ডিক্লেয়ার করা হয়েছে। এটি var কিওয়ার্ডের ক্ষেত্রে ব্যবহৃত প্রধান স্কোপ। অর্থাৎ, যদি আপনি কোনো ভ্যারিয়েবল ফাংশনের ভিতরে var দিয়ে ডিক্লেয়ার করেন, তবে এটি শুধুমাত্র ঐ ফাংশনের মধ্যে অ্যাক্সেসযোগ্য এবং ফাংশনের বাইরে একে অ্যাক্সেস করা যাবে না।
উদাহরণ:
function greet() {
var name = "John"; // ফাংশন স্কোপড ভ্যারিয়েবল
console.log(name); // "John" (ফাংশনের মধ্যে অ্যাক্সেসযোগ্য)
}
greet();
console.log(name); // Error: name is not defined (ফাংশন স্কোপের বাইরে অ্যাক্সেস করা যাবে না)
এখানে, name শুধুমাত্র greet ফাংশনের মধ্যে অ্যাক্সেসযোগ্য এবং ফাংশনটির বাইরে name ভ্যারিয়েবল অ্যাক্সেস করা যাবে না।
var এবং let/const এর মধ্যে স্কোপ পার্থক্য
| বৈশিষ্ট্য | var | let / const |
|---|---|---|
| স্কোপ | ফাংশন স্কোপড (Function-scoped) | ব্লক স্কোপড (Block-scoped) |
| ব্যবহার | একটি ফাংশনের মধ্যে সীমাবদ্ধ | ব্লক (যেমন if, for loop) এর মধ্যে সীমাবদ্ধ |
| উদাহরণ | var x = 10; | let x = 10; অথবা const x = 10; |
| ফাংশন স্কোপ | var এর ভ্যারিয়েবল শুধুমাত্র ফাংশনের মধ্যে কাজ করবে | let এবং const এর ভ্যারিয়েবল ব্লক স্তরের মধ্যে কাজ করবে |
অতিরিক্ত উদাহরণ
ব্লক স্কোপ:
for (let i = 0; i < 5; i++) {
console.log(i); // 0 থেকে 4 পর্যন্ত প্রিন্ট হবে
}
console.log(i); // Error: i is not defined (let দিয়ে ডিক্লেয়ার করা ভ্যারিয়েবল ব্লক স্কোপড)
এখানে, i শুধুমাত্র for লুপের ভিতরে অ্যাক্সেসযোগ্য। লুপের বাইরে এটি অ্যাক্সেসযোগ্য নয়, কারণ এটি ব্লক স্কোপড।
সারাংশ:
- ব্লক স্কোপ: ভ্যারিয়েবলটি কেবলমাত্র যেই ব্লকের মধ্যে ডিক্লেয়ার করা হয়েছে, সেখানে অ্যাক্সেস করা যায়।
letএবংconstএর ক্ষেত্রে এটি প্রযোজ্য। - ফাংশন স্কোপ: ভ্যারিয়েবলটি শুধু ঐ ফাংশনের মধ্যে প্রযোজ্য, যেখানে এটি
varদিয়ে ডিক্লেয়ার করা হয়েছে।
এই পার্থক্যগুলো বুঝে কোড লিখলে আপনার অ্যাপ্লিকেশন বা স্ক্রিপ্টের কার্যক্ষমতা এবং ডিবাগিং অনেক সহজ হবে।
Read more