“Scoping” জাভাস্ক্রিপ্ট এর খুব গুরত্বপূর্ণ একটি বিষয়। আমাদের ডিক্লেয়ারকৃত ভ্যারিয়েবল/ফাংশন আমরা কোন কোন জায়গা থেকে ব্যবহার করতে পারবো অথবা কোন কোন জায়গা থেকে ব্যবহার করার সুযোগ দিবো তা নির্ধারণ করার জন্য আমাদের “Scoping” বিষয়টি জানতে হবে। Scope শব্দটির আভিধানিক অর্থ হচ্ছে সুযোগ। জাভাস্ক্রিপ্ট এ দুই ধরনের Scope রয়েছে। গ্লোবাল স্কোপ ও লোকাল স্কোপ।
১.গ্লোবাল স্কোপঃ জাভাস্ক্রিপ্ট প্রোগ্রামে গ্লোবাল ভ্যারিয়েবল যেকোনো স্থান থেকে অ্যাক্সেস করা যায়। অর্থাৎ, গ্লোবাল ভ্যারিয়েবলগুলোকে প্রোগ্রামের যেকোনো অংশ থেকে ব্যবহার করা সম্ভব।
যখন কোনো ভ্যারিয়েবল var, let, বা const দিয়ে ডিক্লেয়ার করা হয় এবং তা কোনো ব্লকের (যেমন, ফাংশন বা শর্তের ভিতরে না) বাইরে থাকে, তখন সেটি গ্লোবাল স্কোপে থাকে। এদের মূলত একই ধরনের গ্লোবাল স্কোপ থাকে, অর্থাৎ এদেরকে প্রোগ্রামের যেকোনো স্থান থেকে অ্যাক্সেস করা যায়।
var x = 10;
এখানে x ভ্যারিয়েবলটি ব্লকের বাইরে থাকায় তা ফাইলের যেকোনো স্থান থেকে ব্যবহার ও পরিবর্তন করা সম্ভব। এটি মুলত গ্লোবাল স্কোপ।
২.লোকাল স্কোপঃ যখন আমরা কোনো ফাংশন বা ব্লক বা শর্তের ভিতরে কোনো ভ্যারিয়েবল ডিক্লেয়ার করি, তখন সেই ভ্যারিয়েবল শুধুমাত্র সেই ব্লকের মধ্যে ব্যবহার করা যায়। ব্লকের বাইরে থেকে সেই ভ্যারিয়েবলকে আর অ্যাক্সেস বা পরিবর্তন করা সম্ভব হয় না।
উদাহরণস্বরূপ:
function x () {
var m = 10;
console.log(m);
}
x();
console.log(m)
এখানে, console.log(m) প্রথমবার ফাংশনের ভিতরে m এর মান ১০ প্রিন্ট করবে। কিন্তু, দ্বিতীয়বার যখন আমরা ফাংশনের বাইরে থেকে console.log(m) ব্যবহার করছি, তখন এটি একটি Error দেখাবে। এর কারণ হলো, ফাংশনের ভিতরে ডিক্লেয়ার করা ভ্যারিয়েবলগুলো শুধুমাত্র সেই ফাংশনের ভিতরেই সীমাবদ্ধ থাকে, বাইরে থেকে সেগুলো অ্যাক্সেস করা যায় না। এটিই লোকাল স্কোপ।