CoffeeScript-এ Scope হল সেই সীমানা যেখানে ভেরিয়েবল এবং ফাংশন অ্যাক্সেস করা যায়। এটি JavaScript-এর মতোই, যেখানে ভেরিয়েবলগুলি Global Scope বা Local Scope তে থাকতে পারে। CoffeeScript-এ ভেরিয়েবল ঘোষণার সময়, আপনি এই Scope এর সাথে সম্পর্কিত কিছু নিয়ম অনুসরণ করবেন।
Scope এর ধরণ
- Global Scope
- Local Scope
১. Global Scope
Global Scope এমন একটি Scope যেখানে ভেরিয়েবল বা ফাংশন সব জায়গায় অ্যাক্সেস করা যায়, অর্থাৎ কোডের যেকোনো স্থানে সেই ভেরিয়েবল বা ফাংশন ব্যবহার করা সম্ভব।
উদাহরণ: Global Scope
x = 10 # Global variable
add = (a, b) -> a + b # Global function
console.log x # 10
console.log add(5, 3) # 8
এখানে, x এবং add পুরো প্রোগ্রাম জুড়ে অ্যাক্সেসযোগ্য। আপনি যদি অন্য কোনো কোড ব্লকেও x বা add ব্যবহার করেন, সেগুলি একই মান বা আচরণ প্রদর্শন করবে।
কম্পাইল হওয়া JavaScript:
var x, add;
x = 10;
add = function(a, b) {
return a + b;
};
console.log(x); // 10
console.log(add(5, 3)); // 8
এখানে, x এবং add দুটি গ্লোবাল ভেরিয়েবল হিসেবে কাজ করছে এবং যেকোনো স্থান থেকে অ্যাক্সেস করা যাচ্ছে।
২. Local Scope
Local Scope এমন একটি Scope যেখানে ভেরিয়েবল বা ফাংশন শুধুমাত্র নির্দিষ্ট ব্লক বা ফাংশনের মধ্যে কার্যকর। যেসব ভেরিয়েবল বা ফাংশন নির্দিষ্ট ব্লক বা ফাংশনে ঘোষণা করা হয়, তারা শুধুমাত্র সেই ব্লক বা ফাংশনের ভিতরেই অ্যাক্সেসযোগ্য।
উদাহরণ: Local Scope
add = (a, b) ->
sum = a + b # Local variable
console.log sum
return sum
add(5, 3)
console.log sum # Error: sum is not defined outside the function
এখানে, sum একটি Local variable এবং এটি শুধুমাত্র add ফাংশনের মধ্যে অ্যাক্সেসযোগ্য। বাইরের কোড ব্লকে sum অ্যাক্সেস করতে গেলে ত্রুটি হবে, কারণ এটি লোকার স্কোপে আছে।
কম্পাইল হওয়া JavaScript:
var add;
add = function(a, b) {
var sum;
sum = a + b;
console.log(sum);
return sum;
};
add(5, 3);
console.log(sum); // Error: sum is not defined outside the function
এখানে, sum শুধু add ফাংশনের ভিতরেই স্কোপড, বাইরের কোডে এটি অ্যাক্সেসযোগ্য নয়।
Scope এর গুরুত্ব
- Encapsulation: Local scope এর মাধ্যমে আপনি কোডের ভিতরে থাকা ভেরিয়েবল বা ফাংশনকে বাইরের প্রোগ্রাম থেকে লুকিয়ে রাখতে পারেন। এটি কোডকে নিরাপদ এবং নিরাপদ রাখে।
- Memory Management: Local variables কেবলমাত্র ফাংশন বা ব্লক শেষে ডিলিট হয়ে যায়, যা মেমরি ব্যবস্থাপনাকে উন্নত করে।
- Avoiding Conflicts: গ্লোবাল স্কোপে ভেরিয়েবল বা ফাংশন ডিক্লারেশন করলে সেখানে কনফ্লিক্ট বা ওভাররাইট হতে পারে। Local scope ব্যবহারে এটি এড়ানো যায়।
CoffeeScript-এ Scope এবং @ ব্যবহার
CoffeeScript-এ @ ব্যবহার করা হয় ভেরিয়েবল এবং ফাংশনগুলোর this রেফারেন্স তৈরি করতে। এটি সাধারণত object-oriented কোডে ব্যবহার করা হয় এবং গ্লোবাল ও লোকার স্কোপে ভিন্নভাবে কাজ করে।
উদাহরণ: Local Scope and @ (this) Usage
Person = ->
@name = "John" # this.name
@greet = ->
console.log "Hello, #{@name}"
p = new Person()
p.greet() # Hello, John
এখানে @name এবং @greet উভয়ই Local Scope এর মধ্যে অ্যাক্সেসযোগ্য, কারণ তারা Person ক্লাসের অভ্যন্তরে ঘোষণা করা হয়েছে এবং this এর সাহায্যে অ্যাক্সেস করা হয়েছে।
কম্পাইল হওয়া JavaScript:
var Person, p;
Person = function() {
this.name = "John"; // this.name
this.greet = function() {
return console.log("Hello, " + this.name);
};
};
p = new Person();
p.greet(); // Hello, John
Global Scope এবং Local Scope এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Global Scope | Local Scope |
|---|---|---|
| অ্যাক্সেসযোগ্যতা | পুরো প্রোগ্রাম জুড়ে অ্যাক্সেসযোগ্য | শুধুমাত্র নির্দিষ্ট ব্লক বা ফাংশনের মধ্যে অ্যাক্সেসযোগ্য |
| ভেরিয়েবল স্থানীয়তা | গ্লোবাল ভেরিয়েবল/ফাংশন | লোকাল ভেরিয়েবল/ফাংশন |
| ব্যবহারের উদাহরণ | API কনফিগারেশন, সাধারণ সেটিংস | ফাংশন বা মেথডে ব্যবহৃত ভেরিয়েবল |
সারাংশ
CoffeeScript-এ Scope হল এমন একটি ধারণা যা নির্ধারণ করে কোথায় ভেরিয়েবল এবং ফাংশনগুলি অ্যাক্সেসযোগ্য হবে। Global Scope মানে কোডের যেকোনো স্থানে একটি ভেরিয়েবল বা ফাংশন অ্যাক্সেস করা যায়, আর Local Scope মানে একটি নির্দিষ্ট ব্লক বা ফাংশনের মধ্যে তা সীমাবদ্ধ থাকে। Local Scope ব্যবহারের মাধ্যমে কোডের গঠন উন্নত হয় এবং Global Scope ব্যবহারের মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা বাড়ানো যায়। CoffeeScript-এ এই ধারণাগুলো JavaScript-এর মতোই কাজ করে, তবে কোড আরও পরিষ্কার এবং পঠনযোগ্য করে তোলে।