Strelka funksiyalari, asoslari
Funksiya ifodalaridan ham qisqaroq va qulayroq sintaksis mavjud โ strelka funksiyalari (arrow functions). Ular ayniqsa callback'lar uchun juda qulay.
Umumiy sintaksis
Strelka funksiyasi shunday yaratiladi:
let funk = (arg1, arg2, ...) => ifoda;
Bu โ quyidagi Function Expression ning qisqa varianti:
let funk = function(arg1, arg2, ...) {
return ifoda;
};
Ya'ni funk argumentlarni oladi, ifoda ni hisoblaydi va natijasini qaytaradi. Amaliy misol:
Bu yerda (a, b) => a + b ikkita a va b argument oluvchi funksiya. Chaqirilganda u a + b ni hisoblab qaytaradi โ return so'zi ham, figurali qavs ham kerak emas!
Bir yoki nol argument
Agar funksiyada faqat bitta argument bo'lsa, qavslarni tashlab yuborish mumkin:
Agar argument umuman bo'lmasa, bo'sh qavs qo'yiladi (uni tashlab bo'lmaydi):
Ko'p qatorli strelka funksiyalari
Yuqoridagi misollar => ning chap tomonidan argumentlarni, o'ng tomonidan bitta ifodani oldi. Ba'zan bir nechta amal yoki qatordan iborat murakkabroq kod kerak bo'ladi. Bunda figurali qavs ishlatiladi:
{ } ishlatsangiz, natijani qaytarish uchun return ni albatta yozishingiz kerak. Qavssiz variantda esa return avtomatik nazarda tutiladi. { } ni yozib, return ni unutish โ keng tarqalgan xato (funksiya undefined qaytaradi).Xulosa qilib: bir ifoda uchun qavssiz (=> ifoda), bir nechta qator uchun figurali qavs va return (=> { ...; return ...; }).
Qachon qulay?
Strelka funksiyalari qisqa, bir martalik funksiyalar uchun juda qulay โ ayniqsa ularni boshqa joyga yozib o'tirishga hojat yo'q bo'lgan callback'lar uchun. Ular kodni ixcham va o'qishga oson qiladi.
Oldingi darsdagi "sora" misolini strelka funksiyalari bilan solishtiring โ kod ancha qisqardi:
Callback sifatida โ massivlar bilan
Strelka funksiyalari massiv metodlari bilan (masalan forEach, map) juda tez-tez ishlatiladi. Ular haqida keyinroq batafsil o'rganamiz, hozircha strelka funksiyaning qulayligini ko'ramiz:
Xuddi shu kodni oddiy funksiya ifodasi bilan yozganingizda uzunroq va ko'proq "shovqinli" bo'lardi. Strelka funksiyasi bu yerda niyatni aniq ko'rsatadi.
this bilan bog'liq yana bir muhim xususiyati bor, u oddiy funksiyalardan farq qiladi. Ammo bu ilg'or mavzu โ uni obyektlar va this ni o'rgangandan keyin ko'rib chiqamiz. Hozircha strelka funksiyani "qisqa yozuv" sifatida bilib qo'yish yetarli.Xulosa
- Strelka funksiyasi:
let funk = (arg1, arg2) => ifoda;โ qisqa va qulay; - Bitta argument bo'lsa qavslar shart emas:
n => n * 2; - Argument bo'lmasa bo'sh qavs kerak:
() => ...; - Bir ifoda uchun qavssiz yozuv โ
returnavtomatik; - Bir nechta qator uchun figurali qavs va
returnmajburiy; - Ular ayniqsa callback lar va massiv metodlari uchun qulay.