CoffeeScript, JavaScript-এর মতোই, scope বা পর্দা ধারণা সমর্থন করে। এটি বুঝতে সাহায্য করে ভেরিয়েবলগুলোর প্রাপ্যতা কোথায় এবং কিভাবে ব্যবহৃত হবে। CoffeeScript-এ function scope এবং block scope দুটি গুরুত্বপূর্ণ ধারণা রয়েছে, এবং এগুলোর মধ্যে পার্থক্য বোঝা গুরুত্বপূর্ণ।
১. Function Scope (ফাংশন স্কোপ)
Function scope হলো সেই পরিসর যেখানে একটি ফাংশনের ভেতরে ডিক্লেয়ার করা ভেরিয়েবল শুধুমাত্র ফাংশনের ভেতরেই প্রাপ্য থাকে। অর্থাৎ, যদি কোনো ভেরিয়েবল ফাংশনের মধ্যে ডিক্লেয়ার করা হয়, তবে তা শুধুমাত্র সেই ফাংশনটির মধ্যে ব্যবহৃত হতে পারে এবং ফাংশনটির বাইরের কোডে অ্যাক্সেস করা সম্ভব নয়।
উদাহরণ: Function Scope
myFunction = ->
x = 10
console.log x # আউটপুট: 10
myFunction()
console.log x # ত্রুটি: x is not defined
ব্যাখ্যা:
xফাংশনের ভেতরে ডিক্লেয়ার করা হয়েছে, তাই এটি শুধুমাত্রmyFunctionফাংশনের মধ্যে ব্যবহারযোগ্য।- ফাংশনটি বাইরে
xঅ্যাক্সেস করার চেষ্টা করলে ত্রুটি হবে।
JavaScript-এ কম্পাইল হওয়া কোড:
var myFunction;
myFunction = function() {
var x;
x = 10;
return console.log(x);
};
myFunction();
console.log(x); // Error: x is not defined
২. Block Scope (ব্লক স্কোপ)
Block scope হলো একটি ভেরিয়েবল যেটি একটি কোড ব্লকের মধ্যে ডিক্লেয়ার করা হয়, যেমন একটি if স্টেটমেন্ট, for লুপ বা অন্য কোনো ব্লক। let বা const ব্যবহারের মাধ্যমে আপনি ব্লক স্কোপ তৈরি করতে পারেন, কিন্তু CoffeeScript-এ সাধারণভাবে let ব্যবহার করতে হয় না, কারণ এটি JavaScript এর ES6 ফিচার। তবে CoffeeScript স্বয়ংক্রিয়ভাবে let বা const ব্যবহার করে ব্লক স্কোপ পরিচালনা করে।
উদাহরণ: Block Scope
if true
x = 10
console.log x # আউটপুট: 10
console.log x # ত্রুটি: x is not defined
ব্যাখ্যা:
xব্লকের ভিতরে ডিক্লেয়ার করা হয়েছে, তাই এটি শুধুমাত্রifব্লক এর ভেতরেই প্রাপ্য।- বাইরে
xঅ্যাক্সেস করার চেষ্টা করলে ত্রুটি হবে।
JavaScript-এ কম্পাইল হওয়া কোড:
if (true) {
var x;
x = 10;
console.log(x);
}
console.log(x); // Error: x is not defined
৩. Function Scope এবং Block Scope এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Function Scope | Block Scope |
|---|---|---|
| ভেরিয়েবল স্কোপ | ফাংশনের ভিতরে ডিক্লেয়ার করা ভেরিয়েবল | ব্লকের ভিতরে ডিক্লেয়ার করা ভেরিয়েবল |
| ব্যবহারযোগ্যতা | শুধুমাত্র ফাংশনের মধ্যে প্রাপ্য | ব্লক (যেমন if, for) এর ভিতরেই প্রাপ্য |
| ডিফল্ট | JavaScript-এ var দ্বারা ডিফল্টভাবে ব্যবহৃত | JavaScript-এ let, const দ্বারা ব্যবহৃত |
| বাইরে অ্যাক্সেস | ফাংশনের বাইরে অ্যাক্সেস করা যায় না | ব্লকের বাইরে অ্যাক্সেস করা যায় না |
৪. CoffeeScript-এ let এবং const ব্যবহার
CoffeeScript-এর সর্বশেষ সংস্করণে, আপনি ব্লক স্কোপ তৈরি করার জন্য let এবং const ব্যবহার করতে পারেন। এটি JavaScript-এ ব্যবহৃত একই ভাবে কাজ করে, যেখানে ভেরিয়েবল শুধুমাত্র ব্লকের মধ্যে প্রাপ্য থাকে।
উদাহরণ: let এবং const এর ব্যবহার
if true
let x = 10
const y = 20
console.log x # আউটপুট: 10
console.log y # আউটপুট: 20
console.log x # ত্রুটি: x is not defined
console.log y # ত্রুটি: y is not defined
ব্যাখ্যা:
xএবংyব্লকের ভিতরে ডিক্লেয়ার করা হয়েছে এবং ব্লকের বাইরে অ্যাক্সেস করা যাবে না।letএবংconstভেরিয়েবলগুলি ব্লক স্কোপ তৈরি করতে সহায়ক।
সারাংশ
CoffeeScript-এ function scope এবং block scope দুটি গুরুত্বপূর্ণ ধারণা। function scope একটি ভেরিয়েবলকে শুধুমাত্র ফাংশনের মধ্যে প্রাপ্য রাখে, যখন block scope একটি ভেরিয়েবলকে একটি নির্দিষ্ট ব্লকের মধ্যে সীমাবদ্ধ করে। CoffeeScript-এ let এবং const ব্যবহার করে আপনি ব্লক স্কোপ পরিচালনা করতে পারেন, যা কোডের পাঠযোগ্যতা এবং স্থায়িত্ব বাড়ায়।