জাভাস্ক্রিপ্ট স্কোপ

জাভাস্ক্রিপ্ট স্কোপ (JavaScript Scope) – একটি পূর্ণাঙ্গ বাংলা টিউটোরিয়াল

জাভাস্ক্রিপ্টে ভ্যারিয়েবল কোথায় অ্যাক্সেস করা যাবে, তা নির্ধারণ করে স্কোপ। এটি খুবই গুরুত্বপূর্ণ একটি কনসেপ্ট যা প্রত্যেক ওয়েব ডেভেলপারের জানা জরুরি। স্কোপ বুঝলে আপনি বুঝতে পারবেন কোন ভ্যারিয়েবল কখন, কোথায় এবং কিভাবে ব্যবহার করতে পারবেন।

JavaScript Scope কী?

স্কোপ হল ভ্যারিয়েবলের অ্যাক্সেসযোগ্যতা বা কার্যক্ষেত্র। জাভাস্ক্রিপ্টে স্কোপ তিন ধরনের হতে পারে:

  • Global Scope – স্ক্রিপ্টের যেকোনো জায়গা থেকে অ্যাক্সেস করা যায়।
  • Function Scope – শুধু ফাংশনের ভিতরে অ্যাক্সেসযোগ্য।
  • Block Scope (ES6) – ব্লকের ভিতরে সীমাবদ্ধ, যেমন if বা for loop।

১. Global Scope

যে ভ্যারিয়েবল ফাংশনের বাইরে ডিক্লেয়ার করা হয়, তা গ্লোবাল স্কোপে পড়ে এবং যেকোনো জায়গা থেকে অ্যাক্সেসযোগ্য।

<script>
   var name = "Rahim";
   function greet() {
       console.log(name); // Output: Rahim
   }
   greet();
</script>

২. Function Scope

একটি ভ্যারিয়েবল যদি ফাংশনের ভিতরে ডিক্লেয়ার করা হয়, তাহলে সেটি ঐ ফাংশনের বাইরে অ্যাক্সেসযোগ্য নয়।

<script>
   function showAge() {
       var age = 25;
       console.log(age); // Output: 25
   }
   showAge();
   console.log(age); // Error: age is not defined
</script>

৩. Block Scope (let & const)

ES6 থেকে let এবং const ভ্যারিয়েবলগুলো ব্লকের ভিতরে সীমাবদ্ধ। অর্থাৎ, যেকোনো { } এর ভিতরে যদি let/const ব্যবহার করা হয়, সেটা ব্লক স্কোপে পড়ে।

<script>
   {
       let city = "Dhaka";
       console.log(city); // Output: Dhaka
   }
   console.log(city); // Error: city is not defined
</script>

var vs let/const স্কোপের পার্থক্য

var ফাংশন স্কোপ ফলো করে, কিন্তু let ও const ব্লক স্কোপ অনুসরণ করে। নিচের উদাহরণটি দেখুন:

<script>
   if(true) {
       var a = 10;
       let b = 20;
   }
   console.log(a); // Output: 10
   console.log(b); // Error: b is not defined
</script>

Loop এর ভিতরে Scope

var লুপের বাইরে ভ্যালু রিটেইন করে রাখে, কিন্তু let শুধুমাত্র প্রতিটি লুপ আইটেমের জন্য আলাদা স্কোপ তৈরি করে।

<script>
   for (var i = 0; i < 3; i++) {
       setTimeout(function() {
           console.log(i);  // তিনবারই 3
       }, 1000);
   }
</script>

<script>
   for (let i = 0; i < 3; i++) {
       setTimeout(function() {
           console.log(i);  // Output: 0, 1, 2
       }, 1000);
   }
</script>

Hoisting এবং Scope

var ভ্যারিয়েবলগুলো স্কোপের শুরুর দিকে hoist হয় কিন্তু let ও const তা হয় না। তাই একই স্কোপে let বা const ডিক্লেয়ার করার আগে ব্যবহার করলে ReferenceError হয়।

উপসংহার

জাভাস্ক্রিপ্ট স্কোপ নির্ধারণ করে দেয় কোন ভ্যারিয়েবল কোথায় অ্যাক্সেসযোগ্য। সঠিক স্কোপ ব্যবহার করা কোডকে সহজবোধ্য, পরিষ্কার এবং বাগমুক্ত রাখে। আপনি যখন জাভাস্ক্রিপ্টের ভ্যারিয়েবল ব্যবহার করবেন, তখন স্কোপ বুঝে ব্যবহার করাই বেস্ট প্র্যাকটিস।


Leave a Reply