জাভাস্ক্রিপ্টে ফাংশনসমূহ
এই প্রবন্ধটি জাভাস্ক্রিপ্টে ফাংশনসমূহ নিয়ে আলোচনা করে।
YouTube Video
জাভাস্ক্রিপ্টে ফাংশনসমূহ
জাভাস্ক্রিপ্টে ফাংশনসমূহ হল পুনঃব্যবহারযোগ্য কোডের ব্লক যা নির্দিষ্ট কাজ সম্পাদনের জন্য ব্যবহৃত হয়। ফাংশন ব্যবহার করলে কোড আরও পাঠযোগ্য হয় এবং রক্ষণাবেক্ষণ সহজ হয়। ফাংশন বিভিন্নভাবে সংজ্ঞায়িত করা যায় এবং আর্গুমেন্ট ও রিটার্ন মান ব্যবহার করে নমনীয়ভাবে পরিচালিত করা যায়।
ফাংশন সংজ্ঞায়িত করার উপায়সমূহ
ফাংশন ডিক্লারেশন
ফাংশনগুলি function
কীওয়ার্ড ব্যবহার করে নির্ধারণ করা যায়। ফাংশন ডিক্লারেশনগুলো কোড চালানোর আগে হোইস্ট হয়, তাই সেগুলো সংজ্ঞায়িত হওয়ার আগেও ডাকা যেতে পারে।
1console.log(greet("Everyone")); // Hello, Everyone
2
3function greet(name) {
4 return "Hello, " + name;
5}
6
7console.log(greet("Alice")); // Hello, Alice
এই উদাহরণে, greet
ফাংশনটি তার ডিক্লারেশনের আগে ডাকা হয়েছে বলে Hello, Everyone
এবং Hello, Alice
প্রদর্শিত হয়।
ফাংশন এক্সপ্রেশন
ফাংশনসমূহকে একটি ভ্যারিয়েবলের সাথে অ্যাসাইন করেও সংজ্ঞায়িত করা যায়। এই ক্ষেত্রে, ফাংশনটি হোইস্ট হয় না এবং এটি সংজ্ঞায়িত হওয়ার পরেই কেবল ডাকা যেতে পারে।
1const greet = function(name) {
2 return "Hello, " + name;
3};
4
5console.log(greet("Bob")); // Hello, Bob
এই উদাহরণে, Hello, Bob
প্রদর্শিত হবে।
এরো ফাংশন
এরো ফাংশন হল কম সিনট্যাক্স ব্যবহার করে ফাংশন সংজ্ঞায়িত করার একটি উপায়। এগুলি বিশেষভাবে উপযোগী যখন অনামিক ফাংশন (নামবিহীন ফাংশন) ব্যবহার করা হয়। এরো ফাংশনের this
কীওয়ার্ডের ক্ষেত্রে একটি ভিন্ন আচরণ রয়েছে।
1const greet = (name) => {
2 return "Hello, " + name;
3};
4
5// When it can be expressed in a single line,
6// `return` and curly braces can be omitted
7const greetShort = name => "Hello, " + name;
8
9console.log(greet("Charlie")); // Hello, Charlie
10console.log(greetShort("Dave")); // Hello, Dave
এই উদাহরণে greet
এবং greetShort
নামে ফাংশন সংজ্ঞায়িত করা যায়। যদি ফাংশনটি এক লাইনে হয়, {}
(আঁকাবাঁকা বন্ধনী) বর্জন করা যেতে পারে, যেমন greetShort
।
ফাংশনের উপাদানসমূহ
আর্গুমেন্টসমূহ
যে মানগুলি একটি ফাংশনে পাঠানো হয়, সেগুলিকে আর্গুমেন্ট বলা হয়। ফাংশন সংজ্ঞায়িত করার সময় আর্গুমেন্ট নির্দিষ্ট করার মাধ্যমে, ফাংশন কল করার সময় মান পাঠানো যায়।
1function add(a, b) {
2 return a + b;
3}
4
5console.log(add(2, 3)); // 5
ডিফল্ট আর্গুমেন্টসমূহ
আপনি ডিফল্ট মান নির্ধারণ করতে পারেন যদি আর্গুমেন্টে কোনো মান পাস না করা হয়।
1function greet(name = "Guest") {
2 return "Hello, " + name;
3}
4
5console.log(greet()); // Hello, Guest
6console.log(greet("Alice")); // Hello, Alice
এই উদাহরণে, যদি greet()
ডাকা হয়, তবে ডিফল্ট Guest
ব্যবহৃত হবে।
ফেরত মান
আপনি return
স্টেটমেন্ট ব্যবহার করে একটি ফাংশন থেকে একটি ফেরত মান ফেরত দিতে পারেন। যদি কোনো return
স্টেটমেন্ট না থাকে, ফাংশনটি undefined
ফেরত দেয়।
1function greet(name) {
2 console.log('Hello, ' + name + '!');
3}
4function square(num) {
5 return num * num;
6}
7
8console.log(square(4)); // 16
9console.log(greet('Alice')); // undefined
এই উদাহরণে, যেহেতু greet
কোনো মান ফেরত দেয় না, তাই ফেরত মানটি undefined
হয়।
বেনাম ফাংশন
একটি ফাংশন যার কোনো নাম নেই, সেটিকে বেনাম ফাংশন বলা হয়। এগুলি প্রায়শই ফাংশন এক্সপ্রেশান বা অ্যারো ফাংশন হিসাবে ব্যবহার করা হয়।
1const double = function(num) {
2 return num * 2;
3};
4
5console.log(double(5)); // 10
তাৎক্ষণিক আহ্বিত ফাংশন এক্সপ্রেশান (IIFE)
একটি তাৎক্ষণিক আহ্বিত ফাংশন এক্সপ্রেশান (IIFE) হল একটি ফাংশন যা এটি সংজ্ঞায়িত হওয়ার সাথে সাথেই কার্যকর হয়। এটি সাধারণত স্কোপ নিয়ন্ত্রণ করতে ব্যবহৃত হয়।
1/* Example of IIFE: Immediately Invoked Function Expression */
2(function() {
3 console.log("This is an IIFE");
4})(); // This is an IIFE
এটি ঘোষণা হওয়ার সাথে সাথেই কার্যকর হয়।
কলব্যাক ফাংশন
কোনো ফাংশনকে অন্য একটি ফাংশনের আর্গুমেন্ট হিসাবে পাস করা এবং পরে এক্সিকিউট করা হলে সেটিকে কলব্যাক ফাংশন বলা হয়। এটি প্রায়ই অ্যাসিনক্রোনাস প্রসেসিং এবং ইভেন্ট হ্যান্ডলিংয়ে ব্যবহার করা হয়।
1function processData(callback) {
2 let data = "Processed Data";
3 callback(data);
4}
5
6processData(function(result) {
7 console.log(result); // Processed Data
8});
এই উদাহরণে, কনসোলে একটি মান আউটপুট করার জন্য একটি ফাংশনকে কলব্যাক ফাংশন হিসাবে পাস করা হয়েছে।
পুনরাবৃত্ত ফাংশন
একটি ফাংশন নিজেকে কল করলে তাকে পুনরাবৃত্তি বলা হয়, এবং এই পদ্ধতিতে বারংবার প্রসেসিং সম্পন্ন করে এমন ফাংশনকে পুনরাবৃত্ত ফাংশন বলা হয়। উদাহরণস্বরূপ, রিকার্শন ব্যবহার করে ফ্যাক্টোরিয়াল হিসাব করার একটি ফাংশন নিম্নলিখিতভাবে সম্পন্ন করা যেতে পারে।
1function factorial(n) {
2 if (n === 0) {
3 return 1;
4 } else {
5 return n * factorial(n - 1);
6 }
7}
8
9console.log(factorial(5));
10// Output : 120
11// (5 * 4 * 3 * 2 * 1 = 120)
৫
-এর ফ্যাক্টোরিয়াল, যা ১২০
, প্রদর্শিত হবে।
this
কীওয়ার্ড
একটি ফাংশনের মধ্যে ব্যবহৃত this
নির্দেশ করে যে ফাংশনটি কোন অবজেক্টের দিকে নির্দেশিত হচ্ছে। একটি সাধারণ ফাংশনে, এটি কল করা অবজেক্টটির সাথে সম্পর্কিত থাকে, কিন্তু অ্যারো ফাংশনে এটি যে স্কোপে সংজ্ঞায়িত করা হয়েছিল তার this
ধরে রাখে।
1const obj = {
2 name: "Alice",
3 greet: function() {
4 console.log(this.name); // Refers to "Alice"
5 }
6};
7
8obj.greet(); // Alice
9
10const obj2 = {
11 name: "Bob",
12 greet: () => {
13 // Arrow function refers to the outer scope (undefined here)
14 console.log(this.name);
15 }
16};
17
18obj2.greet(); // undefined
obj
পরিবর্তকের greet
ফাংশনটি function
কীওয়ার্ড ব্যবহার করে ঘোষণা করা হয়েছে। সুতরাং, this
কীওয়ার্ডটি obj
পরিবর্তকের অবজেক্টকে বোঝায়। অন্যদিকে, obj2
পরিবর্তকের greet
ফাংশনটি একটি অ্যারো ফাংশন ব্যবহার করে ঘোষণা করা হয়েছে। সুতরাং, এই উদাহরণে this
কীওয়ার্ডটি বাইরের স্কোপের অবজেক্টকে বোঝায় এবং এটি undefined
।
ফাংশন স্কোপ এবং ক্লোজারস
কোনো ফাংশনের ভিতরে ঘোষণা করা পরিবর্তকগুলো ফাংশনের বাইরের থেকে অ্যাক্সেস করা যায় না। এটি ফাংশন স্কোপ নামে পরিচিত। এছাড়াও একটি বৈশিষ্ট্য রয়েছে, যাকে ক্লোজার বলা হয়, যা ফাংশন ঘোষণার সময়কার স্কোপ ধরে রাখে।
1function outer() {
2 let outerVar = "I am outer!";
3
4 function inner() {
5 console.log(outerVar); // Can access outerVar
6 }
7
8 return inner;
9}
10
11const innerFunc = outer();
12innerFunc(); // I am outer!
এই উদাহরণে, inner
ফাংশনটি outerVar
পরিবর্তকটি অ্যাক্সেস করতে পারে কারণ এটি ঘোষণা করার সময়কার স্কোপ ধরে রাখে।
সারসংক্ষেপ
- ফাংশন ঘোষণার বিভিন্ন পদ্ধতি রয়েছে, যার মধ্যে আছে function declarations, function expressions, এবং arrow functions।
- ফাংশনগুলো arguments গ্রহণ করতে পারে এবং values প্রদান করতে পারে।
- বিশেষ ধরণের ব্যবহার রয়েছে, যেমন callback functions এবং recursive functions।
this
ব্যবহারের ক্ষেত্রে সতর্ক থাকতে হবে, কারণ অ্যারো ফাংশন এবং সাধারণ ফাংশনের আচরণ ভিন্ন।- ক্লোজারস ব্যবহার করে বাইরের স্কোপ থেকে অভ্যন্তরীণ পরিবর্তকগুলোকে অ্যাক্সেস করা যায়।
জাভাস্ক্রিপ্টে ফাংশনগুলো অন্যতম গুরুত্বপূর্ণ ধারণা, এর নমনীয় কাঠামোকে কাজে লাগাতে সাহায্য করে।
আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।