কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে রেগুলার ফাংশন বনাম অ্যারো ফাংশন

রেগুলার ফাংশন বনাম অ্যারো ফাংশন

অ্যারো ফাংশন কোড সংক্ষিপ্তভাবে লেখার জন্য ব্যবহৃত হয়। উভয় ফাংশন একইভাবে কাজ করে কিন্তু কিছু পার্থক্য রয়েছে।

সিনট্যাক্স তুলনা

// অ্যারো ফাংশন
let x = (params) => { // code };

// রেগুলার ফাংশন
let x = function functionName(params) { // code };

১. "this" কীওয়ার্ডের ব্যবহার

অ্যারো ফাংশনে this কীওয়ার্ড ব্যবহার করা যায় না, কিন্তু রেগুলার ফাংশনে কোনো সমস্যা ছাড়া ব্যবহার করা যায়।

উদাহরণ

<html> <body> 
<script> 
  var num = {
    len: 12,
    bre: 13,
    square: () => {
      document.write(this.len * this.len);
    },
    rectangle() {
      document.write(this.len * this.bre);
    }
  };
  num.square(); 
  document.write("</br>");
  num.rectangle(); 
</script> 
</body> </html>

আউটপুট

NaN 156

square অ্যারো ফাংশন হওয়ায় this.len undefined (গ্লোবাল স্কোপে len নেই), তাই NaN। rectangle রেগুলার ফাংশন, তাই this অবজেক্ট num-কে রেফার করে, আউটপুট 156।

২. "new" কীওয়ার্ডের ব্যবহার

অ্যারো ফাংশন callable কিন্তু constructible নয়, তাই new কীওয়ার্ড কাজ করে না। রেগুলার ফাংশন উভয় callable এবং constructible, তাই new কাজ করে।

উদাহরণ

<html> <body> 
<script> 
  var word = function() {
    document.write(JSON.stringify(arguments));
  };
  new word("Tutorix", "Tutorialspoint"); // কাজ করবে
  
  var newword = () => {
    document.write(JSON.stringify(arguments));
  };
  new newword("Tutorix", "Tutorialspoint"); // Error: newword is not a constructor
</script> 
</body> </html>

অন্যান্য পার্থক্য

  • arguments অবজেক্ট: অ্যারো ফাংশনের নিজস্ব arguments নেই, এনক্লোজিং স্কোপের arguments এক্সেস করে।
  • prototype: অ্যারো ফাংশনের prototype প্রপার্টি নেই।
  • super: অ্যারো ফাংশনে super ব্যবহার করা যায় না।

কখন কী ব্যবহার করবেন

  • মেথড ডেফিনিশনে, কনস্ট্রাক্টরে, বা this দরকার হলে → রেগুলার ফাংশন
  • কলব্যাক, map/filter/reduce, বা সংক্ষিপ্ত সিনট্যাক্স চাইলে → অ্যারো ফাংশন
  1. জাভাস্ক্রিপ্টে Fat vs Concise Arrow Functions

  2. জাভাস্ক্রিপ্টে Concise Arrow Functions

  3. জাভাস্ক্রিপ্টে Fat Arrow Functions

  4. জাভাস্ক্রিপ্টে ফার্স্ট-ক্লাস ফাংশন