توابع پیکان – جاوا اسکریپت – انجمن DEV
4 تفاوت بین توابع معمولی و توابع پیکان:
1. نحو
عملکرد منظم:
function multiply(num1, num2) {
return num1 * num2;
}
تابع پیکان:
const multiply = (a,b) => a * b;
به برخی تفاوت ها در نحو توجه کنید – توابع پیکان عبارتند از:
- تعریف شده با ‘=>’
- خیر تابع کلمه کلیدی
- همیشه نیازی به {} نیست
- ضمنی “برگشت‘ کلمه کلیدی
*اگر فقط یک پارامتر باشد، پرانتز مورد نیاز نیست
2. بالا بردن
عملکرد منظم:
sayHello();
//=> Hello!
function sayHello() {
console.log(“Hello!”);
}
تابع پیکان:
sayHello();
//=> sayHello is not defined
const sayHello = () => console.log("Hello!");
در این مورد، فراخوانی تابع مربوطه قبل از تعریف آنها فقط برای مثال اول به دلیل بالا بردن کار می کند. همانطور که در اینجا ذکر شد، عبارات توابع (توابع فلش) بالا نمی روند، به این معنی که شما فقط می توانید تابع را پس از اعلام آن فراخوانی کنید.
3. توابع پاسخ به تماس / نحو ناشناس
عملکرد منظم:
function squareNum(num) {
return num * num;
}
const numbers = [1, 2, 3, 4, 5];
const squaredNumbers = numbers.map(squareNum);
console.log(squaredNumbers);
//=> [1, 4, 9, 16, 25]
تابع پیکان:
const numbers = [1, 2, 3, 4, 5];
const squaredNumbers = numbers.map(num => num * num);
console.log(squaredNumbers);
//=> [1, 4, 9, 16, 25]
4. دامنه واژگانی “این”
عملکرد منظم:
const person = {
name: Alice,
sayHello: function() {
console.log(`Hello, my name is ${this.name}`);
},
};
person.sayHello();
//=> Hello, my name is Alice
تابع پیکان:
const person = {
name: Alice,
sayHelloArrow: () => {
console.log(`Hello, my name is ${this.name}`);
}
}
person.sayHelloArrow();
//=> Hello, my name is undefined
همانطور که مشاهده شد، فقط در مثال اول کلمه کلیدی “این‘ توانست از طریق ویژگی ‘name’ (//=>’Alice’) به شی شخص دسترسی پیدا کند. در مورد توابع فلش هم این اتفاق نمی افتد، زیرا تابع فلش خود را ندارد.اینمقدار، که «this» را از دامنه واژگانی محصور به ارث میبرد، در این مورد شی سراسری است که دارای ویژگی «name» نیست. بنابراین، «تعریف نشده» برمیگردد.
نتیجه:
اینها برخی از تفاوت ها هستند و در بیشتر موارد مزایای توابع فلش شامل – 1- به ما اجازه می دهد تا یک نحو تابع کوتاه تری بنویسیم. 2- از مشکلات بالا بردن اجتناب کنید. 3- نوشتن توابع پاسخ به تماس مختصر و قابل استفاده مجدد را به خصوص برای عملیات آرایه آسان کنید. از سوی دیگر، استفاده از توابع 4-پیکانی در هنگام داشتن کلمه کلیدی دشوار است.اینبنابراین مهم است که اطمینان حاصل شود کهاینمقدار ‘ به درستی به شیئی که متد فراخوانی شده است محدود می شود.