JavaScript Arrow Functions
তীর ফাংশন ES6 এ চালু করা হয়েছিল এবং সাধারণত আধুনিক জাভাস্ক্রিপ্টে ব্যবহৃত হয়।
তীর ফাংশন ফাংশন এক্সপ্রেশনের জন্য একটি ছোট সিনট্যাক্সের অনুমতি দেয়।
আপনিfunctionকীওয়ার্ড,returnকীওয়ার্ড এবং কোঁকড়া বন্ধনী বাদ দেওয়া যেতে পারে:
উদাহরণ
let myFunction = (a, b) => a * b;
তীর ফাংশনের সুবিধা:
- সংক্ষিপ্ত বাক্য গঠন:কম কোড, আরো স্পষ্টতা
- পরোক্ষ রিটার্ন:এক লাইন অপারেশন জন্য
returnপ্রয়োজন নেই thisবাঁধাই:পরিবেষ্টিতthisমান ক্যাপচার করে- আধুনিক সিনট্যাক্স:ES6 এবং অন্যান্য আধুনিক জাভাস্ক্রিপ্ট বৈশিষ্ট্যগুলির সাথে ভালভাবে সংহত করে৷
তীর ফাংশন সিনট্যাক্স
একটি তীর ফাংশন=>প্রতীক ব্যবহার করে।
একটি তীর ফাংশন সবসময় একটি ফাংশন এক্সপ্রেশন হিসাবে লেখা হয়।
উদাহরণ
const add = (a, b) => {
return a + b;
};
এই তীর ফাংশন একটি নিয়মিত ফাংশন অভিব্যক্তি মত আচরণ করে.
মৌলিক সিনট্যাক্স:
// মৌলিক বিন্যাস const functionName = (প্যারামিটার) => { // ফাংশন বডি ফেরত ফলাফল; }; // পরোক্ষ রিটার্ন (এক লাইন) const functionName = (প্যারামিটার) => ফলাফল; // একটি প্যারামিটার (বন্ধনী ঐচ্ছিক) const functionName = প্যারামিটার => ফলাফল; // কোন প্যারামিটার নেই (বন্ধনী প্রয়োজন) const functionName = () => ফলাফল;
সংক্ষিপ্ত বাক্য গঠন
যদি ফাংশন বডিতে শুধুমাত্র একটি বিবৃতি থাকে:
আপনিfunctionশব্দ, কোঁকড়া বন্ধনী এবংreturnকীওয়ার্ড রিমুভ করা যায়।
| তীর আগে | একটি তীর দিয়ে |
|---|---|
let add = function(a, b) {return a * b} |
let add = (a, b) => a * b; |
let hello = function() {return "Hello World!";} |
let hello = () => "Hello World!"; |
let square = function(x) {return x * x;} |
let square = x => x * x; |
let greet = function(name) {return "Hello " + name;} |
let greet = name => "Hello " + name; |
সিনট্যাক্স রূপান্তর নিয়ম:
functionকীওয়ার্ডটি সরান- পরামিতি পরে
=>যোগ করা হচ্ছে - একটি একক কর সংস্থা,
{}এবংreturnসরান - একটি বহু-লাইন শরীরের জন্য,
{}এবংreturnরাখুন
একটি প্যারামিটার সহ তীর ফাংশন
যদি একটি ফাংশনের শুধুমাত্র একটি প্যারামিটার থাকে, তাহলে আপনি বন্ধনী বাদ দিতে পারেন:
বন্ধনী সহ
let square = (x) => x * x;
let hello = (val) => "Hello " + val;
let double = (num) => num * 2;
বন্ধনী ছাড়া
let square = x => x * x;
let hello = val => "Hello " + val;
let double = num => num * 2;
বন্ধনীর নিয়ম:
- 0 প্যারামিটার:বন্ধনীপ্রয়োজনীয় (
() =>) - 1 প্যারামিটার:বন্ধনীঐচ্ছিক (
x =>বা(x) =>) - 2+ প্যারামিটার:বন্ধনীপ্রয়োজনীয় (
(x, y) =>)
পরামর্শ:সামঞ্জস্যের জন্য সর্বদা বন্ধনী ব্যবহার করুন।
তীর ফাংশন ডিফল্টরূপে একটি মান প্রদান করে
যদি একটি ফাংশনের শুধুমাত্র একটি বিবৃতি থাকে যা একটি মান প্রদান করে:
আপনি বন্ধনী ব্যবহার করতে পারেন এবংreturnকীওয়ার্ড সরান:
উদাহরণ
let hello = () => "Hello World!";
let square = x => x * x;
let fullName = (firstName, lastName) => firstName + " " + lastName;
দ্রষ্টব্য:
এইযদি ফাংশনে শুধুমাত্র একটি স্টেটমেন্ট থাকেশুধুমাত্র কাজ করবে।
যদি একাধিক বিবৃতি থাকে, আপনি কোঁকড়া ধনুর্বন্ধনী ব্যবহার করতে পারেন এবংreturnব্যবহার করতে:
// একটি লাইন - পরোক্ষ রিটার্ন যোগ করা যাক = (a, b) => a + b; // একাধিক লাইন - সুস্পষ্ট রিটার্ন হিসাব করি = (a, b) => { যাক যোগফল = a + b; যাক পণ্য = a * b; ফেরত { যোগফল, পণ্য}; };
কোন প্যারামিটার ছাড়া তীর ফাংশন
যদি কোন প্যারামিটার না থাকে, তাহলে বন্ধনীর প্রয়োজন হয়।
তীর ফাংশন সহ:
let hello = () => "Hello World!";
let getRandom = () => Math.random();
let getCurrentTime = () => new Date().toLocaleTimeString();
সাধারণ ভুল:
// এটি কাজ করে না - রিটার্ন কীওয়ার্ড পরোক্ষ রিটার্নে অনুমোদিত নয় let myFunction = (x, y) => রিটার্ন x * y; // এটি কাজ করে না - কোঁকড়া ধনুর্বন্ধনী অন্তর্নিহিত রিটার্ন প্রতিরোধ করে যাক myFunction = (x, y) => { x * y }; // এটি একমাত্র কাজ যা কাজ করে - সুস্পষ্ট রিটার্ন যাক myFunction = (x, y) => { রিটার্ন x * y }; // অথবা এটি (পরোক্ষ রিটার্ন) যাক myFunction = (x, y) => x * y;
আপনি শুধুমাত্র যদি ফাংশন একটি একক বিবৃতি হয়returnকীওয়ার্ড এবং কোঁকড়া বন্ধনী বাদ দেওয়া যেতে পারে। এই কারণে, সবসময় এগুলি থাকা ভাল অভ্যাস:
// পরিষ্কার স্বচ্ছ ফেরত যাক myFunction = (x, y) => { রিটার্ন x * y; };
তীর ফাংশন ঘোষণা নয়
তীর ফাংশন সবসময় এক্সপ্রেশন হয় এবং একটি ভেরিয়েবলে বরাদ্দ করা আবশ্যক।
তাদের সংজ্ঞায়িত করার আগে ব্যবহার করা যাবে না।
উদাহরণ
// মিথ্যা - অগ্রিম কলিং হ্যালো(); // রেফারেন্স ত্রুটি let hello = () => "হ্যালো"; // ঠিক আছে - সংজ্ঞায়িত করার পরে কল করা let hello = () => "হ্যালো"; হ্যালো(); // "হ্যালো"
দ্রষ্টব্য:
তীর ফাংশন ব্যবহার করার আগে সংজ্ঞায়িত করা আবশ্যক।
যেহেতু তীর ফাংশনগুলি কার্যকরী অভিব্যক্তি, সেগুলি মাথার উপরে উত্তোলিত হয় না।
ওভারহেড লিফটের তুলনা:
// ফাংশন ঘোষণা - উত্তোলন console.log(greet("জন")); // "হ্যালো জন" ফাংশন শুভেচ্ছা (নাম) { "হ্যালো" + নাম ফেরত দিন; } // তীর ফাংশন - উত্তোলিত নয় console.log(greetArrow("John")); // রেফারেন্স ত্রুটি const greetArrow = (নাম) => "হ্যালো" + নাম;
তীর ফাংশন এবং এই কীওয়ার্ড
তীর ফাংশন তাদের নিজস্ব আছেthisকোন মূল্য নেই।
তারা আশেপাশের কোড থেকে এসেছেthisপান
উদাহরণ: রুটিন ফাংশন
const person = {
name: "John",
greet: function() {
return "Hello, " + this.name;
}
};
console.log(person.greet()); // "Hello, John"
উদাহরণ: তীর ফাংশন
const person = { নাম: "জন", শুভেচ্ছা: () => { ফিরুন "হ্যালো," + this.name; } }; console.log(person.greet()); // "হ্যালো, অনির্ধারিত" (বা "হ্যালো, ")
একটি পদ্ধতি হিসাবে তীর ফাংশন ব্যবহার প্রায়ই অপ্রত্যাশিত ফলাফল তৈরি করে।
এই লিঙ্ক:
এই ক্ষেত্রে,thisব্যক্তি মানে বস্তু নয়। তীর ফাংশনthisআমি "লেক্সিকাল স্কোপ" (যে স্থানটিতে তারা সংজ্ঞায়িত করা হয়েছে) থেকে উদ্ভূত।
তীর ফাংশন তাদের নিজস্ব আছেthisনা.তারা পরিবেশগত উদ্দেশ্য থেকে হয়thisক্যাপচার
কখন তীর ফাংশন ব্যবহার করবেন
সংক্ষিপ্ত অপারেশন জন্য
এক লাইন ফাংশন, রূপান্তরকারী এবং সহজ গণনা
const square = x => x * x;
const fullName = (f, l) => `${f} ${l}`;
const isAdult = age => age >= 18;
কলব্যাক এবং অ্যারে পদ্ধতির জন্য
map, filter, reduce, event listeners
numbers.map(n => n * 2);
users.filter(u => u.active);
button.addEventListener('click', () => {
console.log('Clicked!');
});
যখন আপনার নিজের এই প্রয়োজন নেই
শীর্ষ-স্তরের অপারেশন, বন্ধ, ইউটিলিটি
const createAdder = x => y => x + y;
const add5 = createAdder(5);
console.log(add5(3)); // 8
কখন তীর ফাংশন ব্যবহার করবেন না
উপাদান পদ্ধতি হিসাবে
তীর ফাংশন অবজেক্ট পদ্ধতি হিসাবে কাজ করে না
// ত্রুটি: const obj = { মান: 10, getValue: () => this.value // undefined }; // ঠিক আছে: const obj = { মান: 10, getValue: function() { এই.মূল্য ফেরত দিন; // 10 } };
যখন আপনি আপনার নিজের এই প্রয়োজন
কনস্ট্রাক্টর ফাংশন, ইভেন্ট হ্যান্ডলার, পদ্ধতি
// ত্রুটি: ফাংশন ব্যক্তি(নাম) { this.name = নাম; this.greet = () => { console.log(this.name); // অনির্ধারিত }; } // ঠিক আছে: ফাংশন ব্যক্তি(নাম) { this.name = নাম; this.greet = function() { console.log(this.name); // সঠিক }; }
ফাংশন ঘোষণা ব্যবহার করার সময়
ওভারহেড উত্তোলনের জন্য কার্যকলাপ ঘোষণা
// ত্রুটি: const multiply = (a, b) => a * b; // তাড়াতাড়ি বলা যাবে না // ঠিক আছে: ফাংশন গুন (a, b) { ফেরত a * b; } // যে কোন জায়গায় কলযোগ্য
সাধারণ ভুল
বন্ধনী নিয়ম ভুলে যাওয়া
শূন্য বা একাধিক প্যারামিটারের জন্য বন্ধনী প্রয়োজন।
// ত্রুটি: let greet => "হ্যালো"; // বন্ধনী নেই যোগ করা যাক = a, b => a + b; // বন্ধনী নেই // ঠিক আছে: let greet = () => "হ্যালো"; // বন্ধনী রয়েছে যোগ করা যাক = (a, b) => a + b; // বন্ধনী রয়েছে
পদ্ধতি হিসাবে তীর ফাংশন ব্যবহার করে
তীর ফাংশনthisবাঁধে না
// ত্রুটি: const obj = { মান: 10, getValue: () => this.value // undefined }; // ঠিক আছে: const obj = { মান: 10, getValue: function() { এই.মূল্য ফেরত দিন; // 10 } };
মাথার উপরে একটি লিফটের প্রত্যাশা করা
তীর ফাংশন উত্তোলন করা হয় না.
// ত্রুটি: console.log(greet("জন")); // রেফারেন্স ত্রুটি const greet = name => "হ্যালো" + নাম; // ঠিক আছে: const greet = name => "হ্যালো" + নাম; console.log(greet("জন")); // "হ্যালো জন"
কার্যক্রম বিভাগের সমাপ্তি
আপনি এখন জাভাস্ক্রিপ্ট ফাংশন সম্পর্কে সবচেয়ে গুরুত্বপূর্ণ ধারণা শিখেছেন।
কার্যকলাপ বিজ্ঞপ্তি
নামকৃত অপারেশন এবং ওভারহেড লিফটিং
কার্যকরী অভিব্যক্তি
ভেরিয়েবলে সংরক্ষিত ফাংশন এবং কলব্যাক
তীর ফাংশন
আধুনিক সিনট্যাক্স এবং পরোক্ষ পুনরাবৃত্তি
ব্রাউজার সমর্থন
তীর ফাংশন একটি ES6 বৈশিষ্ট্য.
জুন 2017 পর্যন্ত সমস্ত আধুনিক ব্রাউজারে ES6 সম্পূর্ণরূপে সমর্থিত:
| ব্রাউজার | সংস্করণ | তারিখ |
|---|---|---|
| Chrome | 51 | মে 2016 |
| Edge | 15 | এপ্রিল 2017 |
| Firefox | 54 | জুন 2017 |
| Safari | 10 | সেপ্টেম্বর 2016 |
| Opera | 38 | জুন 2016 |
পশ্চাদপদ সামঞ্জস্য:
আপনি যদি পুরানো ব্রাউজারগুলিকে সমর্থন করতে চান (ইন্টারনেট এক্সপ্লোরার), আপনার কোডকে বাবেলের মতো একটি কম্পাইলার ব্যবহার করে ES5 এ রূপান্তর করুন।
তীর ফাংশন অনুশীলন করুন
নিচের কোনটি একটি বৈধ জাভাস্ক্রিপ্ট অ্যারো ফাংশন?
নিচের কোনটি একটি বৈধ জাভাস্ক্রিপ্ট অ্যারো ফাংশন?
সমাধান বর্ণনা:
তীর ফাংশনের জন্য সঠিক সিনট্যাক্স হল:
// মৌলিক বিন্যাস const functionName = (প্যারামিটার) => অভিব্যক্তি; // উদাহরণ: const greet = () => 'হ্যালো ওয়ার্ল্ড!'; const স্কোয়ার = x => x * x; const add = (a, b) => a + b; // পূর্ণ ফর্ম (একাধিক লাইন) const calculate = (a, b) => { const sum = a + b; const পণ্য = a * b; ফেরত { যোগফল, পণ্য}; };
গুরুত্বপূর্ণ নিয়ম:
- তীর ফাংশন সবসময় ভেরিয়েবলে বরাদ্দ করা উচিত
=>পরামিতি আগে বন্ধনী আবদ্ধ করা আবশ্যক- 0 প্যারামিটার: বন্ধনী প্রয়োজন (
() =>) - 1 প্যারামিটার: বন্ধনী ঐচ্ছিক (
x =>বা(x) =>) - 2+ পরামিতি: বন্ধনী প্রয়োজন (
(x, y) =>) - একক লাইন বডি: পরোক্ষ রিটার্ন (বন্ধনী বা
returnপ্রয়োজন নেই) - মাল্টি-লাইন বডি: কোঁকড়া বন্ধনী এবং
returnপ্রয়োজনীয়
greeting = () => 'Hello World!';সমস্ত নিয়ম মেনে চলছে:
- পরিবর্তনশীল ✓ এ বরাদ্দ করা হয়েছে
- প্যারামিটারের জন্য 0 বন্ধনী ✓
- তীর ✓
- একক লাইন পরোক্ষ রিটার্ন ✓