রেগুলার ফাংশন বনাম অ্যারো ফাংশন
অ্যারো ফাংশন কোড সংক্ষিপ্তভাবে লেখার জন্য ব্যবহৃত হয়। উভয় ফাংশন একইভাবে কাজ করে কিন্তু কিছু পার্থক্য রয়েছে।
সিনট্যাক্স তুলনা
// অ্যারো ফাংশন
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, বা সংক্ষিপ্ত সিনট্যাক্স চাইলে → অ্যারো ফাংশন