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

জাভাস্ক্রিপ্টে অ্যারো ফাংশন


MDN অনুযায়ী, একটি অ্যারো ফাংশন এক্সপ্রেশন হলো একটি রেগুলার ফাংশন এক্সপ্রেশনের সিনট্যাক্টিক্যালি কমপ্যাক্ট অ্যাল্টারনেটিভ, যদিও এর নিজস্ব বাইন্ডিং নেই this, arguments, super, বা new.target কীওয়ার্ডগুলোর সাথে। অ্যারো ফাংশন এক্সপ্রেশন মেথড হিসেবে উপযুক্ত নয়, এবং এগুলো কনস্ট্রাক্টর হিসেবে ব্যবহার করা যায় না।

রেগুলার ফাংশন এবং অ্যারো ফাংশনে ৩টি সুক্ষ্ম পার্থক্য রয়েছে জাভাস্ক্রিপ্টে।

  • নিজস্ব this বাইন্ডিং নেই

    অ্যারো ফাংশনদের নিজস্ব ভ্যালু নেই। অ্যারো ফাংশনের ভিতরের this-এর ভ্যালু সবসময় এনক্লোজিং স্কোপ থেকে ইনহেরিট করা হয়।

উদাহরণ

this.a = 100; let arrowFunc = () => {this.a = 150}; function regFunc() { this.a = 200; } console.log(this.a) arrowFunc() console.log(this.a) regFunc() console.log(this.a)

আউটপুট

এটি নিচের আউটপুট দেবে -

100 150 150

দেখুন অ্যারো ফাংশন তার স্কোপের বাইরের this অবজেক্টকে পরিবর্তন করল। রেগুলার ফাংশন শুধু তার নিজস্ব ভিতরে পরিবর্তন আনা।

  • অ্যারো ফাংশনদের arguments অ্যারে নেই। JS-এ ফাংশনে arguments অ্যারে একটি স্পেশাল অবজেক্ট যেটি ফাংশনে পাস করা সব আর্গুমেন্ট পাওয়ার জন্য ব্যবহার করা হয়। this-এর মত, অ্যারো ফাংশনদের নিজস্ব বাইন্ডিং নেই arguments অবজেক্টের সাথে, সেগুলো এনক্লোজিং স্কোপের arguments-এ বাউন্ড।
  • অ্যারো ফাংশন কলেবল কিন্তু কনস্ট্রাক্টিবল নয়। যদি একটি ফাংশন কনস্ট্রাক্টিবল হয়, তবে সেটিকে new দিয়ে কল করা যায়, অর্থাৎ new User()। যদি একটি ফাংশন কলেবল হয়, তবে সেটিকে new ছাড়া কল করা যায় (সাধারণ ফাংশন কল)।

ফাংশন ডিক্লেরেশন/এক্সপ্রেশন দিয়ে তৈরি ফাংশন দুটোই কনস্ট্রাক্টিবল এবং কলেবল।

অ্যারো ফাংশন (এবং মেথড) শুধু কলেবল। ক্লাস কনস্ট্রাক্টর শুধু কনস্ট্রাক্টিবল।

আপনি যদি নন-কলেবল ফাংশন কল করতে চান বা নন-কনস্ট্রাক্টিবল ফাংশন কনস্ট্রাক্ট করতে চান, রানটাইম এরর পাবেন।

উদাহরণ

let arrowFunc = () => {} new arrowFunc()

আউটপুট

এই কোড নিচের এরর দেবে -

arrowFunc is not a constructor

  1. জাভাস্ক্রিপ্টে Fat vs Concise Arrow Functions

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

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

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