JavaScript Scope কী? Global, Function এবং Block Scope
JavaScript এ Scope বলতে বোঝায় একটি Variable কোথায় তৈরি হয়েছে এবং কোডের কোন জায়গা থেকে সেই Variable ব্যবহার করা যাবে। একটি Variable সব জায়গা থেকে ব্যবহার করা যাবে কিনা, তা তার Scope-এর উপর নির্ভর করে।
JavaScript এ প্রধানত Global Scope, Function Scope এবং Block Scope রয়েছে।
JavaScript Scope কী?
সহজভাবে বললে, Scope হলো একটি Variable-এর কাজ করার সীমা। অর্থাৎ Variable কোথায় Access বা ব্যবহার করা যাবে, সেটাই Scope নির্ধারণ করে।
JavaScript Scope এর প্রধান ধরন
- Global Scope
- Function Scope
- Block Scope
Global Scope কী?
কোনো Variable যদি Function বা Block এর বাইরে Declare করা হয়, তাহলে সেটি সাধারণত Global Scope-এ থাকে। Global Variable কোডের বিভিন্ন জায়গা থেকে ব্যবহার করা যেতে পারে।
let x = 10;
function myFunction() {
console.log(x);
}
myFunction();
এখানে x একটি Global Variable। তাই Function-এর ভিতর থেকেও x ব্যবহার করা যাচ্ছে।
Global Scope এর উদাহরণ
let name = "John";
console.log(name);
এখানে name Function বা Block-এর বাইরে তৈরি হয়েছে। তাই এটি Global Scope-এ রয়েছে।
Function Scope কী?
একটি Function-এর ভিতরে Declare করা Variable সাধারণত সেই Function-এর ভিতরেই ব্যবহার করা যায়। Function-এর বাইরে থেকে সেটি Access করা যায় না। একে Function Scope বলা হয়।
function myFunction() {
let x = 10;
console.log(x);
}
myFunction();
এখানে x শুধু myFunction()-এর ভিতরে ব্যবহার করা যাবে।
Function এর বাইরে Variable ব্যবহার করলে
function myFunction() {
let x = 10;
}
console.log(x);
উপরের কোডে Error হবে। কারণ x Function-এর ভিতরে Declare করা হয়েছে এবং Function-এর বাইরে এর কোনো Access নেই।
var, let এবং const এর Function Scope
একটি Function-এর ভিতরে var, let অথবা const দিয়ে Declare করা Variable Function-এর বাইরে ব্যবহার করা যায় না।
function myFunction() {
var x = 1;
let y = 2;
const z = 3;
console.log(x);
console.log(y);
console.log(z);
}
myFunction();
কিন্তু নিচের কোডগুলো Function-এর বাইরে Error দিবে:
console.log(x);
console.log(y);
console.log(z);
Block Scope কী?
Curly Brackets { }-এর ভিতরে তৈরি হওয়া একটি নির্দিষ্ট Scope-কে Block Scope বলা হয়। JavaScript এর let এবং const Block Scope অনুসরণ করে।
{
let x = 2;
const y = 5;
console.log(x);
console.log(y);
}
Block-এর ভিতরে x এবং y ব্যবহার করা যাবে। কিন্তু Block-এর বাইরে ব্যবহার করা যাবে না।
{
let x = 2;
}
console.log(x);
এখানে Error হবে, কারণ x শুধু { } Block-এর ভিতরে কাজ করে।
var কি Block Scope?
না। var Block Scope অনুসরণ করে না। var দিয়ে একটি Block-এর ভিতরে Variable Declare করলেও সেটি Block-এর বাইরে ব্যবহার করা যেতে পারে।
{
var x = 2;
}
console.log(x);
Output হবে:
2
কারণ var Block Scope তৈরি করে না।
let এর Block Scope উদাহরণ
{
let x = 2;
console.log(x);
}
// console.log(x);
এখানে Block-এর ভিতরে x ব্যবহার করা যাবে, কিন্তু বাইরে গেলে Error হবে।
const এর Block Scope উদাহরণ
{
const x = 10;
console.log(x);
}
// console.log(x);
const ও let-এর মতো Block Scope অনুসরণ করে।
var এবং let এর Scope পার্থক্য
var x = 10;
{
var x = 2;
}
console.log(x);
এখানে Output হবে 2। কারণ Block-এর ভিতরে var x আবার একই Variable পরিবর্তন করেছে।
let x = 10;
{
let x = 2;
console.log(x);
}
console.log(x);
এখানে Block-এর ভিতরে Output হবে 2 এবং Block-এর বাইরে Output হবে 10।
কারণ Block-এর ভিতরের x এবং বাইরের x আলাদা Scope-এ রয়েছে।
JavaScript Scope এর পার্থক্য
- Global Scope: Function এবং Block-এর বাইরে Declare করা Variable বিভিন্ন জায়গা থেকে ব্যবহার করা যায়।
- Function Scope: Function-এর ভিতরে Declare করা Variable শুধু সেই Function-এর ভিতরে ব্যবহার করা যায়।
- Block Scope: { }-এর ভিতরে let এবং const দিয়ে তৈরি Variable শুধু সেই Block-এর ভিতরে ব্যবহার করা যায়।
সহজ উদাহরণ
let globalVariable = "Global";
function myFunction() {
let functionVariable = "Function";
{
let blockVariable = "Block";
console.log(globalVariable);
console.log(functionVariable);
console.log(blockVariable);
}
}
myFunction();
এখানে globalVariable বিভিন্ন জায়গা থেকে ব্যবহার করা যায়। functionVariable শুধু Function-এর ভিতরে ব্যবহার করা যায়। আর blockVariable শুধু Block-এর ভিতরে ব্যবহার করা যায়।
উপসংহার
JavaScript এ Scope বোঝা খুবই গুরুত্বপূর্ণ। কারণ Scope জানলে বোঝা যায় একটি Variable কোথায় ব্যবহার করা যাবে। var সাধারণত Function Scope অনুসরণ করে, আর let ও const Block Scope অনুসরণ করে। আধুনিক JavaScript এ Variable-এর Scope ভালোভাবে নিয়ন্ত্রণ করার জন্য সাধারণত let এবং const বেশি ব্যবহার করা হয়।